2012-07-10 35 views

回答

10

DEFERRABLE
不可推遲
該控制約束是否可以被推遲。每個命令後都會立即檢查不可延遲的約束。可以推遲檢查可推遲的約束,直到事務結束(使用SET CONSTRAINTS命令)。 NOT DEFERRABLE是默認值。目前只有外鍵約束接受這個條款。所有其他約束類型都不可延遲。

[來源] http://www.postgresql.org/docs/8.1/static/sql-createtable.html

總之,假設兩個表具有環狀FK依賴性。當我們對兩個表中不存在引用數據的數據執行插入操作並且FK約束不會被延遲時,由於存在違反FK約束的情況,DB會拋出錯誤。如果延期,驗證將在提交交易時執行。

+0

這就是我的想法。感謝您清理它。 – Gregg 2012-07-10 00:43:23