oracle sql defer VS disable

时间:2013-08-16 19:49:45

标签: sql oracle constraints

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

感谢

1 个答案:

答案 0 :(得分: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语句中指定此子句。您必须删除约束并重新创建它。