网站大量收购闲置独家精品文档,联系QQ:2885784924

Oracle维护数据完整性.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle维护数据完整性课案

小结 在这一课中,您应该能够掌握: 实现数据完整性 使用相应的策略创建和维护约束 从数据字典获取信息 练习 13 此练习涉及以下主题: 创建约束 启用唯一性约束 创建 EXCEPTIONS 表 找出表中现有的约束违反情况,纠正错误, 并重新启用约束 数据完整性 数据完整性是指数据库中的数据符合业务规则。维护数据完整性共有三种主要方法: 应用程序代码 数据库触发器 声明完整性约束 具体使用上述哪种方法映射业务规则是设计时应考虑的问题。而数据库管理员主要关心的是实施设计人员选择的方法,并在完整性需求和性能要求之间取得平衡。 应用程序代码既可作为数据库中的存储过程实现,也可作为在客户端上运行的应用程序实现。本课着重讲述完整性约束的使用。 保证数据完整性的方法(续) 数据库触发器: 数据库触发器是 PL/SQL 程序,在表上发生事件(如插入或更新列)时执行。可以启用或禁用触发器,即可以设置触发器在事件发生时执行,或者将触发器设置为不执行(即使已定义)。通常情况下,创建数据库触发器只是为了强制应用不能定义为完整性约束的复杂业务规则。 注:数据库触发器在其它 Oracle 课程中讲述。 完整性约束: 完整性约束是执行业务规则的首选机制,这是因为它可以: 改善性能 易于声明和修改,不需要进行大量编码 集中管理规则 使用灵活(启用或禁用) 在数据字典中完全文档化 以下部分解释完整性约束的行为,并论述 Oracle 服务器如何执行这些完整性约束。 约束的类型 缺省情况下,表中的所有列均可以为空。空意味着没有值。NOT NULL 约束要求表列必须包含值。 UNIQUE 关键字约束要求某列或一组列(关键字)中的值必须是唯一的。表中的任何两行在指定的一列或一组列中不能有重复的值。 数据库中的每个表至多有一个 PRIMARY KEY 约束。PRIMARY KEY 约束确保以下两种情况均为真: 表中的任何两行在指定列中没有重复的值。 主键列不包含 NULL 值 某列或一组列上的 CHECK 完整性约束要求,对于表的每一行,指定的条件必须为真或未知。 虽然 NOT NULL 和 CHECK 约束并不直接要求 DBA 关注,但 PRIMARY KEY、UNIQUE 和 FOREIGN KEY 约束仍须进行管理,以确保高可用性和性能水平可接受。 约束的状态 可以启用 (ENABLE) 或禁用 (DISABLE) 完整性约束。如果启用某个约束,则在数据库中 输入或更新数据时,就会对数据进行检查。禁止输入不符合约束规则的数据。如果禁用某个约束,则可以在数据库中输入不符合约束规则的数据。完整性约束可处于以下状态之一: DISABLE NOVALIDATE DISABLE VALIDATE ENABLE NOVALIDATE ENABLE VALIDATE DISABLE NOVALIDATE:不检查处于 DISABLE NOVALIDATE 状态的约束。表中的数据(包括输入或更新的新数据)可以不符合约束所定义的规则。 DISABLE VALIDATE:当约束处于此状态时,不允许对受约束的列进行任何修改。另外,约束上的索引将被删除并且禁用约束。注:如果约束可延迟,则不删除索引。 约束的状态(续) ENABLE NOVALIDATE:如果约束处于此状态,则不能输入违反约束的新数据。但是, 表可能包含无效的数据,即数据违反约束。启用处于 NOVALIDATE 状态的约束对正在上载有效 OLTP 数据的数据仓库配置是非常有用的。 ENABLE VALIDATE:如果约束处于此状态,则不能将违反约束的行插入到表中。但是,禁用该约束时,可以插入此类行。此类行称为该约束的例外。如果约束处于 ENABLE NOVALIDATE 状态,则在禁用约束时输入的数据所引起的违反情况仍然存在。要将约束 置于已验证状态,必须更新或删除违反约束的行。 当某一约束由禁用状态更改为 ENABLE VALIDATE 时,将锁定表并对表中的所有数据进行一致性检查。这可能会引起 DML 操作(如等待数据加载),因此,建议先从禁用状态转为 ENABLE NOVALIDATE,然后再转为 ENABLE VALIDATE。 约束检查 可以将约束有效性检查延迟到事务处理完成时进行。 不可延迟的约束或立即约束: 不可延迟的约束(也称立即约束)在每个 DML 语句结束时执行。违反约束将导致语句回退。如果约束导致删除级联等操作,则将该操作作为引起该操作的语句的一部分。不能将定义为不可延迟的约束修改为在事务处理结束时执行。 可延迟的约束: 可延迟的约束是仅在提交事务处理时才检查的约束。如果提交时检测到违反约束的行,则

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档