Postgresql

檢索所有 PK 和 FK

  • February 8, 2020

我有一個大數據庫,我需要從每個表中提取所有主鍵和外鍵。

我有 pgAdmin III。

有沒有辦法自動執行此操作而不是手動檢查每個表?

您可以在查詢中使用該函式pg_get_constraintdef(constraint_oid),如下所示:

SELECT conrelid::regclass AS table_from
    , conname
    , pg_get_constraintdef(oid)
FROM   pg_constraint
WHERE  contype IN ('f', 'p ')
AND    connamespace = 'public'::regnamespace  -- your schema here
ORDER  BY conrelid::regclass::text, contype DESC;

結果:

table_from | conname    | pg_get_constraintdef
------------+------------+----------------------
tbl        | tbl_pkey   | PRIMARY KEY (tbl_id)
tbl        | tbl_col_fk | FOREIGN KEY (col) REFERENCES tbl2(col) ON UPDATE CASCADE
...

返回給定模式中所有表的所有主鍵和外鍵,按表名排序,PK 在前。

關於**pg_constraint**.

關於對象標識符類型regclass, regnamespace, …)的手冊。

引用自:https://dba.stackexchange.com/questions/36979