查看 liquibase 和add-foreign-key-constraint的文档,有一个名为 deferable 的属性。但是文档并没有真正提到该属性的作用。有人知道吗?
问问题
9093 次
1 回答
16
DEFERRABLE
NOT DEFERRABLE
这控制是否可以延迟约束。在每个命令之后将立即检查不可延迟的约束。可延迟约束的检查可以推迟到事务结束(使用 SET CONSTRAINTS 命令)。NOT DEFERRABLE 是默认值。目前只有外键约束接受这个子句。所有其他约束类型都是不可延迟的。
[来源] http://www.postgresql.org/docs/8.1/static/sql-createtable.html
简而言之,假设两个表具有循环 FK 依赖关系。当我们执行插入数据时,两个表中都不存在引用数据并且 FK 约束没有延迟,因为违反了 FK 约束,DB 会抛出错误。如果延迟,验证将在提交事务时执行。
于 2012-07-10T00:31:25.353 回答