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

2023-12-22 17:20

本文主要是介绍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. 

这篇关于GBASE南大通用数据库的对象模式和违反检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/524809

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员