最佳答案
我在 数据库系统-全书中读到了关于 SQL 关键字 DEFERRABLE
的内容。
后一个 [NOT DEFERRABLE]是默认值,这意味着每次执行数据库修改语句时,如果修改可能违反外键约束,则会立即检查约束。
但是,如果我们将约束声明为 延期,那么我们可以选择让它等到事务完成后再检查约束。
我们通过 INITIALLY DEFERRED或 一开始很快跟随关键字 延期。在前一种情况下,检查将推迟到每个事务提交之前。在后一种情况下,检查将在每个语句之后立即进行。
NOT DEFERRABLE
和 DEFERRABLE INITIALLY IMMEDIATE
有什么不同? 在这两种情况下,似乎在每个单独的语句之后都会检查任何约束。