-1

在 oracle sql 中,将约束设置为延迟 VS 禁用约束似乎具有类似的功能。两者之间有什么显着差异吗?如果您能用现实世界的场景来说明它们的用途,将不胜感激。

谢谢

4

1 回答 1

3

禁用约束是在数据库中定义但根本不强制执行的约束。(就像放弃一个约束一样,它更容易重新打开。)至于可延期:

http://docs.oracle.com/cd/E18283_01/server.112/e16508/glossary.htm#CHDIBAAA

可延期约束

允许 SET CONSTRAINT 语句将约束检查推迟到事务提交之后的约束。可延迟约束使您能够在进行可能违反约束的更改时暂时禁用约束。

值得注意的是:

http://docs.oracle.com/cd/B28359_01/server.111/b28286/clauses002.htm

您不能更改约束的可延迟性。无论您指定其中任何一个参数,还是通过不指定任何一个来隐式地使约束 NOT DEFERRABLE,您都不能在 ALTER TABLE 语句中指定此子句。您必须删除约束并重新创建它。

于 2013-08-16T20:43:31.653 回答