SET CONSTRAINTS 设置当前事务里的约束运算的特性。 在 IMMEDIATE 模式下,约束是在每条语句后面进行检查的。 在 DEFERRED 模式下,一直到事务提交时才检查约束。
在你把约束的模式修改成 IMMEDIATE 之后,新的约束模式是反作用式地生效的: 任何尚在等待的,需要在事务结束检查地数据修改的约束(在使用 DEFERRED 的时候)都将在执行 SET CONSTRAINTS 命令的时候马上检查。
从创建的时候开始,一个约束总是表现为下面三个特性之一: INITIALLY DEFERRED, INITIALLY IMMEDIATE DEFERRABLE,或 INITIALLY IMMEDIATE NOT DEFERRABLE。 第三个特性不会受 SET CONSTRAINTS影响。
目前,只有外键约束被这个设置影响。检查和唯一约束总是立即检查的而不是可推迟的。