2013-08-16 19 views
0

在oracle sql中,將約束設置爲延遲VS禁用約束似乎具有相似的功能。兩者之間有什麼重大差異?如果你能用真實世界的場景來說明它們的用途,那將是非常值得讚賞的。oracle sql推遲VS禁用

感謝

回答

3

禁用的約束是一個在數據庫中定義的,但並非強制的。 (就像刪除約束只是它更容易在切換回來。)至於延期的:

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

延遲的約束

允許一個集約束聲明推遲的約束檢查,直到之後的交易是一種約束承諾。可延遲約束使您可以在進行可能違反約束的更改時臨時禁用約束。

值得注意:

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

你不能改變一個約束的延遲性。無論您指定這些參數中的任何一個,還是通過指定它們中的任何一個來隱式約束NOT DEFERRABLE,都不能在ALTER TABLE語句中指定此子句。您必須刪除約束並重新創建它。