2012-04-04 84 views
2

我工作的數據庫遷移程序,我想一個數據庫遷移到另一個數據庫whoose已經創建的表。更具體地說,我有兩個數據庫幾乎相同的表,一個是滿的,另一個是空的。我的問題是遷移表值是按字母順序進行的。有些表具有外鍵,如果這些表是從外鍵表中按字母順序排列的,那麼我不能輸入值。有什麼辦法可以禁用java或postgresql的外鍵檢查。任何幫助都會很棒。數據庫插入失敗的原因爲外鍵約束

回答

2

如果我是正確的,有沒有可能在PostgreSQL上禁用FK。正如@mcfinnigan所說,你可以在開始插入之前刪除fk,或者你可以用DEFERRABLE鍵重新創建一個限制。請參閱postgresql CREATE TABLE documentation.

DEFFERABLE手段,FK將不檢查,直到完成交易。

+0

是否有更新聲明可以設置表可推遲? – mbaydar 2012-04-04 10:12:31

+0

您不能修改表上的約束。只有你可以添加或刪除alter table語句。 ALTER TABLE ADD XXX約束fk_xxx [...]或ALTER TABLE XXX DROP約束fk_xxx。您必須使用DEFFERABLE鍵來限制重新定義表格。然後,如果使用DEFFERABLE鍵創建約束,則應該調用「SET CONSTRAINTS DEFERRED」。 – Aykut 2012-04-04 10:18:01

2

參照完整性是一個數據庫屬性,而不是JDBC屬性 - 你需要運行您導入之前顯式刪除或禁用對數據庫的FK約束,然後重新啓用它們之後。

這可能是一個更好的主意,以確定您的數據的層次結構和插入數據開始與獨立的記錄,然後再插入過程中的相關記錄鏈接到這些。

+0

感謝。我會嘗試第一個。其次可能如此複雜。 – mbaydar 2012-04-04 10:01:35