- 3
- 0
- 约1.07万字
- 约 32页
- 2018-02-24 发布于河南
- 举报
DBAI_les13_rev1_1维护数据完整性
维护数据完整性 目标 完成这一课的学习后,您应该能达到下列目标: 实施数据完整性约束 维护完整性约束 从数据字典获取约束信息 数据完整性 约束的类型 约束的状态 约束检查 将约束定义为立即或延迟 使用 SET CONSTRAINTS ALTER SESSION 语句还包含将约束设置为 DEFERRED 或 IMMEDIATE 的子句 SET CONSTRAINTS。 执行主键和唯一键约束 外键注意事项 创建表时定义约束 约束定义原则 主约束和唯一性约束: 将索引放在单独的表空间中。 如果经常使用批量加载,请使用非唯一索引。 自引用外键: 在初始加载后定义或启用外键。 延迟约束检查。 启用约束 没有表锁定 主键和唯一键必须使用非唯一索引 启用约束 锁定表 可以使用唯一或非唯一的索引 需要有效的表数据 使用 EXCEPTIONS 表 通过运行 utlexcpt1.sql 脚本来创建 EXCEPTIONS 表。 执行带有 EXCEPTIONS 选项的 ALTER TABLE 语句。 使用 EXCEPTIONS 上的子查询定位包含无效数据的行。 纠正错误。 重新执行 ALTER TABLE 以启用约束。 获取约束信息 通过查询以下视图获取有关约束的信息: DBA_CONSTRAINTS DBA_CONS_COLUMNS 小结 在这一课中,您应该能够掌握: 实现数据完整性 使用相应的策略创建和维护约束 从数据字典获取信息 练习 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:当约束处于此状态时,不允许对受约束的列进行任何修改。另外,约束上的索引将被删除并且禁用约束。注:如果约束可延迟,则不删除索引。 约束的状态(续) ENAB
原创力文档

文档评论(0)