2014-01-21 54 views
3

我是PostgreSQL的新手。我正在努力解決一個問題。問題是我想從給定表引用的表中刪除外鍵約束。以下查詢給我的約束列表。從PostgreSQL中給定的表中引用的表中刪除外鍵約束

SELECT 
    tc.ct_name, tc.table_name AS fg_tb_name, kcu.column_name AS fg_cn_name, 
    ccu.table_name AS tb_name, 
    ccu.column_name AS cn_name, 
FROM 
    information_schema.table_constraints AS tc 
    JOIN information_schema.key_column_usage AS kcu 
     ON tc.constraint_name = kcu.constraint_name 
    JOIN information_schema.constraint_column_usage AS ccu 
     ON ccu.constraint_name = tc.constraint_name 
WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='dimension' AND ccu.table_schema='public'; 

它給出了由'維'表引用的表和外鍵名稱列表。查詢的

結果如下: -

ct_name   | fg_tb_name  | fg_cn_name   | tb_name | cn_name | 
-------------------------------------------------------------------------------------- 
data_ver_fk_cur | data_ver   | cur     | dimension | dim_id  | 
-------------------------------------------------------------------------------------- 
data_ver_fk_reg | data_ver   | reg     | dimension | dim_id  | 
-------------------------------------------------------------------------------------- 
data_ver_fk_ven | data_ver   | ven     | dimension | dim_id  | 
--------------------------------------------------------------------------------------- 

我想刪除其存在於所得的表中的所有約束。請建議我。

+0

也許這有助於:http://stackoverflow.com/questions/18271622/generate-sql-to-update-primary-key它需要psql「\ d table_name」的輸出。 – guettli

回答

3

檢查出Magnus Hagander的post提供了一個腳本,用於刪除和重新創建所有參照完整性。你可以採用它來滿足你的需求。

+0

創建您的外鍵作爲推遲也是一個選項。 – bodman

相關問題