2012-07-10 58 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