历史版本。 PostgreSQL 7.4 已结束支持。 请参阅 当前版本手册.
SET CONSTRAINTS
SET CONSTRAINTS — 设置当前事务的约束模式
大纲
SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }描述
SET CONSTRAINTS设置当前事务中约束检查的行为。在IMMEDIATE模式下,约束在每条语句结束时检查。在DEFERRED模式下,约束直到事务提交时才检查。
当你把一个约束的模式改为
IMMEDIATE时,新的约束模式会追溯生效:任何原本会在事务结束时(使用
DEFERRED时)检查的未完成数据修改,都会改在SET CONSTRAINTS命令执行期间检查。
约束在创建时总是被赋予下列三种特性之一:INITIALLY DEFERRED、INITIALLY IMMEDIATE DEFERRABLE或
INITIALLY IMMEDIATE NOT DEFERRABLE。第三类不受SET CONSTRAINTS命令的影响。
目前,只有外键约束受此设置影响。检查和唯一约束实际上总是初始立即且不可推迟的。
注解
这条命令只更改当前事务内约束的行为。因此,如果你在事务块(BEGIN/COMMIT对)之外执行这条命令,它将看不出有任何效果。如果你希望更改一个约束的行为而又不必在每个事务中都发出一条
SET
CONSTRAINTS命令,可以在创建约束时指定
INITIALLY DEFERRED或INITIALLY
IMMEDIATE。
兼容性
这条命令符合 SQL 标准定义的行为,但有一个限制:在 PostgreSQL中它只适用于外键约束。