使用 SET Database Object Mode 语句来更改约束和唯一索引的过滤模式,或启用或禁用约束、索引和触发器,或在此语句正在重置它们的约束模式时绕过外键约束的引用完整性检查。
此语句是对 SQL 的 ANSI/ISO 标准的扩展。要指定是在语句级还是在事务级检查约束,请参阅 SET Transaction Mode 语句。
在此语句的上下文中,database object有索引、触发器或约束的受限的含义,而不是在 其它语法段 中定义的 数据库对象名 段描述此术语的那种更通用的含义。
SET Database Object Mode 语句的作用域限定在当前连接的会话的本地数据库中的约束、索引或触发器。在您更改对象的模式之后,新模式对那个数据库的所有会话生效,并保持生效,直到另一 SET Database Object Mode 语句再次更改它为止,或直到从该数据库删除该对象为止。
在任何给定的时刻,对象必须恰好处于这些模式中的一种之中。这些模式,有时称为对象状态,在 数据库对象模式的定义 部分描述。
sysobjstate 系统目录表描述数据库中的所有约束、索引和触发器对象,以及每一对象的当前模式。由于仅在指定那种模式的 SET CONSTRAINTS 语句或 ALTER TABLE ADD CONSTRAINT 语句期间保持该 NOVALIDATE 模式,sysobjstate 表不理会 NOVALIDATE 模式,其仅在那些 DDL 语句之内阻止违反检查。要获取关于 sysobjstate 表的信息,请参阅 GBase 8s SQL 参考指南。
在集群环境中,在可更新的辅助服务器上,不支持 SET Database Object Mode 语句。(更为通用地,对于辅助服务器的数据库中的表上的 UPDATA 操作,该语句指定的任何会话级索引、触发器或约束模式不会重定向。)