• 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 操作,该语句指定的任何会话级索引、触发器

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

  • 相关阅读:
    flask蓝图url连接问题1
    you-get下载提示 ccode错误
    【mysql学习笔记23】索引优化
    游戏思考18:AOI视野同步算法介绍和简单实现(未完待续8/3)
    测试技能提升篇——k8s的网络核心概念
    云原生|kubernetes |部署k8s图形化管理组件 kuboard v3
    备份服务器数据的重要
    go调用so库
    现在大一,请问前端还值得学习吗
    BGP——基本概念3(路由聚合)
  • 原文地址:https://blog.csdn.net/weixin_48486849/article/details/125888224