维护数据完整性.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Biblioteka Baidu
13.2 完整性约束
约束检查的时间 通常情况下,Oracle在一条DML语 句执行结束后立即进行完整性约束检查, 如果发现数据不满足约束条件,则回退该 操作。但是,有时不希望执行完一条DML 语句后立即检查约束,而是多条DML语句 执行完后再进行检查,这时可以在事务提 交(COMMIT命令)时统一检查约束,如 果任何一个数据不满足约束条件,Oracle 将回退整个事务。
13.2 完整性约束
约束条件
非空约束(NOT NULL) 唯一性约束(UNIQUE) 主键约束(PRIMARY KEY) 外键约束(FOREIGN KEY) 检查约束(CHECK)
13.2 完整性约束
约束条件
通过EMPLOYEE表的创建说明各种约束条件的作用。 CREATE TABLE EMPLOYEE (EMPNO NUMBER(10) PRIMARY KEY, NAME VARCHAR2(40) NOT NULL, SEX CHAR(1), DEPTNO NUMBER(2) DEFAULT 10, SALARY NUMBER(7,2) CHECK (SALARY<1000000.00), SOCNUM CHAR(14) UNIQUE, FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO)) TABLESPACE USERS;
13.2 完整性约束
约束状态
1.激活和禁用 激活状态(ENABLE) 在这种状态下,完整性 约束被激活,Oracle将对输入到表中的数据进行 完整性约束检查,如果数据不符合约束,则不 允许保存到表中,所执行的操作被回退。一般 情况下,完整性约束总是处于被激活状态以保 证数据完整性。 禁用状态(DISABLE) 在这种状态下,完整性 约束被禁止,Oracle不对输入到表中的数据进行 完整性约束检查,任何数据都可以存入表中。
13.2 完整性约束
约束检查的时间
2.可延迟约束 可延迟约束是指可以指定约束检查的时间,可以在 DML语句执行完后不立即进行约束检查,而是延迟到事 务提交命令COMMIT执行时检查。 可延迟约束是在定义约束时指定了DEFERRABLE 子句。该子句有两种检验模式: INITIALLY IMMEDIATE 立即检验模式。这种模式同非 延迟约束一样,是在DML语句执行完后立即检查约束。 这是可延迟约束的缺省值。 INITIALLY DEFERRED 延迟检验模式。这种模式不在 DML语句执行完后立即检查约束,而是推迟到事务提交 命令COMMIT执行完后。
13.1 数据完整性概述
数据完整性
作用: 实体完整性可以保证表内每条记录的唯一性。 域完整性可以保证表内数据项的合理性和有效 性。 引用完整性又称参照完整性,可以保证引用表 和被引用表之间的数据一致性。 用户定义完整性是指用户可以定义不属于其他 任何完整性分类的特定业务规则。
13.1 数据完整性概述
13.1 数据完整性概述
数据完整性
数据完整性是指存储在数据库中数据的 一致性和正确性。根据数据完整性作用的数 据库对象和范围不同,可以将数据完整性分 为: 实体完整性(Entity Integrity) 域完整性(Domain Integrity) 引用完整性(Reference Integrity) 用户定义完整性(User Defined Integrity)
13.1 数据完整性概述
数据完整性规则
数据完整性的实现方法: 应用程序代码 完整性约束 数据库触发器
13.1 数据完整性概述
数据完整性规则
利用完整性约束实施数据完整性规则有下列优点: 创建或修改表时直接通过SQL语句定义完整性约束,无 需额外的编程,可减少程序性错误。 完整性约束存储在数据字典中,任何进入表中的数据都 必须接受完整性约束,可以保证数据库中所有数据的完 整性。 使用完整性约束可以分离数据和程序。 DBA可以通过约束管理语句灵活地设置完整性约束的 有效性。 由于完整性约束存储在数据字典中,DBA、开发人员 和应用程序可以快速查询事务规则,选择正确的操作或 数据。
13.2 完整性约束
约束状态
根据以上情况可以将完整性约束组合成4种状态 : ENABLE VALIDATE 表中的数据必须满足约束 条件,将要输入的数据也要满足约束条件。 ENABLE NOVALIDATE Oracle不对表中的数 据进行约束验证,只对将要输入的数据进行约 束检查。 DISABLE VALIDATE 约束被禁用,所有将要 输入的数据均不作约束检查,并且不允许作任 何插入、删除或修改操作。 DISABLE NOVALIDATE 约束禁用,并且不对 表中的数据进行约束验证。
Oracle体系结构与管理 第十三章 维护数据完整性
本章要点
数据完整性概述 完整性约束 实现约束 维护约束 查询约束信息
本章教学目标
理解数据完整性的基本概念及数据完整 性规则; 理解Oracle数据库的完整性约束的条件、 状态和检查时间等概念; 掌握定义列级约束和表级约束的技术和 方法; 掌握添加、修改和删除约束的技术和方 法。
数据完整性规则
Oracle应用于关系数据库数据完整性有下列4 种类型的规则: NULL规则 在插入或修改表的行时是否允许包 含有NULL的值。 唯一性规则 保证插入或修改的记录在字段值 上的唯一性。 引用完整性规则 保证多个相关表的一致性。 用户自定义规则 可实现复杂的完整性检查。
13.2 完整性约束
约束状态
2.验证和非验证 验证状态(VALIDATE) 在这种状态下,在定 义或激活约束时,Oracle检查表中该列中的数据 是否满足约束条件。 非验证状态(NOVALIDATE) 在这种状态下, 在定义或激活约束时,Oracle不检查表中该列中 的数据是否满足约束条件。
13.2 完整性约束
约束检查的时间
1.非延迟约束 非延迟约束也叫立即约束,是在一条DML 语句执行完后立即进行完整性约束检查,如果 发现数据不满足约束条件,则回退该操作。非 延迟约束一经定义,不允许将检查时间修改在 提交事务的时候,除非删除该约束,重新定义 约束为延迟约束。 非延迟约束是约束的默认值,如果要显式 定义非延迟约束可以在定义约束时使用NO DEFERRABLE子句。
相关文档
最新文档