GBASE南大通用数据库的对象模式和违反检测

GBASE南大通用数据库的对象模式和违反检测可帮助您监视数据完整性。在模式更改期间,或当对于短期 内大批量数据执行插入、删除和更新操作时组合这些特性,这些特性特别有效。

在对象模式特性的讨论的上下文之内,数据库对象是约束、索引和触发器,且它们中的每 一个都有不同的模式。请不要将与对象模式特性相关的数据库对象与一般的数据库对象相 混淆。一般的数据库对象是诸如表和同义词之类的对象。

GBASE南大通用数据库对象模式的定义

您可为约束或唯一索引设置禁用、启用或过滤模式。您可为触发器或重复索引设置启用或 禁用模式。您可使用数据库对象模式来控制 INSERT、DELETE 和 UPDATE 语句的效果。

GBASE南大通用数据库启用模式

在缺省情况下,约束、索引和触发器是启用的。 当数据库对象是启用的时,数据库服务器识别该数据库对象的存在,并在它执行 INSERT、 DELETE 或 UPDATE 语句时考虑该数据库对象。因此,当触发器事件发生时,强制执行 启用的约束,更新启用的索引,并执行启用的触发器。

当您启用约束和唯一索引时,如果存在违反的行,则该数据处理语句失败(即,不更改行) 且数据库服务器返回错误消息。 当您分析违反表和诊断表中的信息时,您可标识该失败的原因。然后,您可采取更正活动 或回滚该操作。

GBASE南大通用数据库禁用模式

当数据库对象是禁用的时,在执行 INSERT、DELETE 或 UPDATE 语句时,数据库服务 器不考虑它。当触发器事件发生时,不强制执行禁用的约束,不更新禁用的索引,也不执 行禁用的触发器。当您禁用约束和唯一索引时,违反该约束或唯一索引的限制的任何数据 操纵语句都成功,(即,更改目标行),且数据库服务器不返回错误消息。

GBASE南大通用数据库过滤模式

当约束或唯一索引处于过滤模式时,该语句成功,且在 INSERT、DELETE 或 UPDATE 语 句期间,通过将失败了的行写到与该目标表相关联的违反表,数据库服务器强制满足约束 或唯一索引需求。将关于该约束违反的诊断信息写到与目标表相关联的诊断表。

GBASE南大通用数据库 使用数据操纵语句的模式的示例

一个使用 INSERT 语句的示例可说明启用模式、禁用模式与过滤模式之间的差异。请考虑 这样一条 INSERT 语句,其中一个用户试图在表上添加不满足完整性约束的一行。例如, 假设用户 joe 创建了名为 cust_subset 的表,且此表由下列列构成:ssn(客户的社会保险编 号)、fname(客户的名)、lname(客户的姓)以及 city(客户生活的城市)。ssn 列具有 INT 数据类型。其他三列有 CHAR 数据类型。

假设用户 joe 定义了 lname 列为非空,但尚未将名称指定给非空约束,于是,数据库服务器 已隐式地将名称 n104_7 指定给此约束。最后,假设用户 joe 在 ssn 列上创建了名 为 unq_ssn 的唯一索引。

现在,对 cust_subset 有 Insert 权限的用户 linda 在此表上输入下列 INSERT 语句:

INSERT INTO cust_subset (ssn, fname, city)

VALUES (973824499, "jane", "los altos");

要更好地理解启用模式、禁用模式与过滤模式之间的区别,您可在下面三个部分中查看前 面的 INSERT 语句的结果。

当约束为启用的时,插入操作的结果

如果在 cust_subset 表上的 NOT NULL 约束是启用的,则 INSERT 语句不能在此表中插入 新行。而当用户 linda 输入该 INSERT 语句时,她收到下列错误消息: -292 An implied insert column lname does not accept NULLs.

相关推荐
薛定谔的算法13 小时前
phoneGPT:构建专业领域的检索增强型智能问答系统
前端·数据库·后端
Databend15 小时前
Databend 亮相 RustChinaConf 2025,分享基于 Rust 构建商业化数仓平台的探索
数据库
得物技术16 小时前
破解gh-ost变更导致MySQL表膨胀之谜|得物技术
数据库·后端·mysql
Raymond运维20 小时前
MariaDB源码编译安装(二)
运维·数据库·mariadb
沢田纲吉20 小时前
🗄️ MySQL 表操作全面指南
数据库·后端·mysql
RestCloud1 天前
SQL Server到Hive:批处理ETL性能提升30%的实战经验
数据库·api
RestCloud1 天前
为什么说零代码 ETL 是未来趋势?
数据库·api
ClouGence2 天前
CloudCanal + Paimon + SelectDB 从 0 到 1 构建实时湖仓
数据库
DemonAvenger2 天前
NoSQL与MySQL混合架构设计:从入门到实战的最佳实践
数据库·mysql·性能优化
AAA修煤气灶刘哥2 天前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql