Postgresql
檢索所有 PK 和 FK
我有一個大數據庫,我需要從每個表中提取所有主鍵和外鍵。
我有 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 在前。
關於對象標識符類型(
regclass
,regnamespace
, …)的手冊。