使用 SET CONSTRAINTS 语句来更改处理表上的某些或所有现有的约束的方式。
仅 SQL 的 CREATE TABLE、CREATE TEMP TABLE 和 ALTER TABLE ADD CONSTRAINT 语句可创建新的约束。SET CONSTRAINTS 语句支持下列语法,用于修改数据库服务器强制(或不理会)单个表上的一个或多个现有的约束的方式:
SET Transaction Mode 语句可以 SET CONSTRAINTS 关键字开始,在 SET Transaction Mode 语句 中对此描述。
SET Database Object Mode 语句的特殊情况也可以 SET CONSTRAINTS 关键字开始,这是对 SQL 的 ANSI/ISO 标准的扩展。除了约束之外,SET Database Object Mode 语句还可启用或禁用触发器或索引,或更改唯一索引的过滤模式。要获取那个语句的完整语法和语义,请参阅 SET Database Object Mode 语句。
要获取关于使用 SET CONSTRAINTS 语句来启用或禁用通过 PRIMARY KEY 和 FOREIGN KEY 约束定义隐式地创建的系统定义的索引的信息,请参阅主题 SET INDEXES 语句。
您对约束的模式的任何更改都保持,直到再次修改那个约束模式的设置,或直到删除那个约束或它的表为止。
然而,引用约束的 NOVALIDATE 模式是例外,因为这些模式在指定 NOVALIDATE 模式的 SET CONSTRAINTS 语句之外(或 ALTER TABLE ADD CONSTRAINT 语句之外)不保持。
在集群环境中,在可更新的辅助服务器上,不支持 SET CONSTRAINTS ENABLED 和 SET CONSTRAINTS DISABLED 语句。(更一般地,SET Database Object Mode 语句指定的会话级索引、触发器和约束模式不会为辅助服务器的数据库中表对象上的 UPDATE 操作被重定向。)