GBase8s数据库SET Database Object Mode 语句

使用 SET Database Object Mode 语句来更改约束和唯一索引的过滤模式,或启用或禁用约束、索引

和触发器,或在此语句正在重置它们的约束模式时绕过外键约束的引用完整性检查。

用法

在此语句的上下文中,database object 有索引、触发器或约束的受限的含义,而不是在 其它语法段

中定义的 数据库对象名 段描述此术语的那种更通用的含义。

SET Database Object Mode 语句的作用域限定在当前连接的会话的本地数据库中的约束、索引或触

发器。在您更改对象的模式之后,新模式对那个数据库的所有会话生效,并保持生效,直到另一

SET Database Object Mode 语句再次更改它为止,或直到从该数据库删除该对象为止。

重要:

此语句可将外键约束重置到的 NOVALIDATE 模式对上述通用语句是一例外,如本主题下列部分

所说明的那样。

触发器、索引和约束的对象模式

允许重复的值的触发器和索引仅可用两种对象模式:

启用的(通过 ENABLED 关键字)

DISABLED 禁用的(通过 DISABLED 关键字)

对于约束和唯一索引,您还可指定两种附加的模式:

不带有违反完整性错误的过滤(通过 FILTERING WITHOUT ERROR 关键字)

带有违反完整性错误的过滤(通过 FILTERING WITH ERROR 关键字)

对于外键约束,您还可指定三种附加的模式:

启用的,但不检查违反完整性错误(通过 ENABLED NOVALIDATE 关键字)

带有违反完整性错误的过滤,但不检查违反完整性错误(通过 FILTERING WITH ERROR

NOVALIDATE 关键字)

不带有违反完整性错误的过滤,但不检查违反完整性错误(通过 FILTERING WITHOUT

ERROR NOVALIDATE 关键字)。

在运行 SET Database Object Mode 语句时,仅最后三种约束模式保持,之后,该约束模式转换为相

应的启用或过滤模式,且在后续的 DML 操作过程中强制要求引用的完整性。但对于那些被认为不

违反引用的约束的大型表,这些绕过违反外键约束的模式可显著地减少迁移或导入大型数据集所需

要的时间。

在任何给定的时刻,对象必须恰好处于这些模式中的一种之中。这些模式,有时称为对象状态,在

数据库对象模式的定义 部分描述。

sysobjstate 系统目录表描述数据库中的所有约束、索引和触发器对象,以及每一对象的当前模式。

由于仅在指定那种模式的 SET CONSTRAINTS 语句或 ALTER TABLE ADD CONSTRAINT 语句

期间保持该 NOVALIDATE 模式,sysobjstate 表不理会 NOVALIDATE 模式,其仅在那些 DDL

语句之内阻止违反检查。要获取关于 sysobjstate 表的信息.

在集群环境中,在可更新的辅助服务器上,不支持 SET Database Object Mode 语句。(更为通用

地,对于辅助服务器的数据库中的表上的 UPDATA 操作,该语句指定的任何会话级索引、触发器

或约束模式不会重定向。)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值