.\" auto-generated by docbook2man-spec $Revision: 1.1 $ .TH "SET CONSTRAINTS" "7" "2003-11-02" "SQL - Language Statements" "SQL Commands" .SH NAME SET CONSTRAINTS \- 设置当前事务的约束模式 .SH SYNOPSIS .sp .nf SET CONSTRAINTS { ALL | \fIname\fR [, ...] } { DEFERRED | IMMEDIATE } .sp .fi .SH "DESCRIPTION 描述" .PP \fBSET CONSTRAINTS\fR 设置当前事务里的约束运算的特性。 在 IMMEDIATE 模式下,约束是在每条语句后面进行检查的。 在 DEFERRED 模式下,一直到事务提交时才检查约束。 .PP 在你把约束的模式修改成 IMMEDIATE 之后,新的约束模式是反作用式地生效的: 任何尚在等待的,需要在事务结束检查地数据修改的约束(在使用 DEFERRED 的时候)都将在执行 SET CONSTRAINTS 命令的时候马上检查。 .PP 从创建的时候开始,一个约束总是表现为下面三个特性之一: INITIALLY DEFERRED, INITIALLY IMMEDIATE DEFERRABLE, 或 INITIALLY IMMEDIATE NOT DEFERRABLE。 第三个特性不会受 SET CONSTRAINTS影响。 .PP 目前,只有外键约束被这个设置影响。检查和唯一约束总是立即检查的而不是可推迟的。 .SH "NOTES 注意" .PP 这个命令只在当前事务里修改约束的行为。因此,如果你在事务块外面 (BEGIN/COMMIT 对)执行这个命令, 它将显得没有任何作用那样。如果你希望不在每个事务中发出 SET CONSTRAINTS 也能修改约束的行为, 那么在创建这些约束的时候声明 INITIALLY DEFERRED 或者 INITIALLY IMMEDIATE。 .SH "COMPATIBILITY 兼容性" .PP 这条命令与 SQL 标准里定义的行为兼容,只不过,在 PostgreSQL 里,它只适用于外键约束。 .SH "译者" .B Postgresql 中文网站 .B 何伟平