oracle dba培训教程 第12章 管理和维护数据完整性

什么是数据的完整性

所谓数据的完整性就是在数据库中符合公司商业规划的有效数据

有哪几种主要的方法来维护数据的完整性

Oracle的完整性约束,数据库触发器,应用程序代码

Oracle的完整性约束有哪些优点

!三种维护数据的完整性方法中只有oracle的完整性约束是oracle产品自带的

oracle的完整性约束时强加在表上的规则或条件,当错误刚一出现时就能被oracle系统自动地发现,从而使数据库的开发和维护更加容易

Oracle系统提供了几种约束

非空约束,唯一约束,主键约束,外键约束,条件约束

完整性约束可能处在的4种状态

DISABLE NOVALIDATE(禁止而无效):不做任何约束多定义的检查

DISABLE VALIDATE(禁止而有效):表中由约束所限制的列不能做任何修改,约束上的索引将被删除,约束也将被禁止。

ENABLE NOVALIDATE(激活而无效):新的违反约束的数据不能输入到表中,但是表中可能包含违反约束的数据。

ENABLE VALIDATE(激活而有效):任何违反约束的数据行都不能插入到表中,不过可能有一些违反约束的数据行在约束时被禁止期间已经插入了表中,这样的数据行被称为例外,他们必须或者被修改或者被删除。

延迟性约束和非延迟性约束

延迟性约束:仅在每一个事务提交时进行数据完整性的检查,如果有数据违反了约束条件,整个事务将被回滚

非延迟性约束:要在每一个DML语句结束时进行数据完整性检查,如果有数据违反了约束条件,该语句将被回滚。

怎样定义延迟性约束

!将约束定义成Initial Immediate:除非显示的设置这一约束,否则约束默认功能与非延迟性相同

!将约束定义成Initial Deferred:约束默认功能就是在每一个事务结束时进行数据完整性检查。

怎样改变延迟状态

set constraint 用户名。约束名 deferred/immediate

不能修改任何非延迟性约束的延迟状态

怎样获得约束的信息

SELECT constraint_nameconstraint_typetable_namestatusdeferrabledeferredvalidated

FROM dba_constraints

定义和维护约束时应该遵循的原则

!对于主键和唯一键

         利用using index 子句将约束的索引放在(与表)不同的表空间中

         如果经常有大规模数据的装入,使用非唯一索引

!对于自引用的外键

         在初始装入数据之后再定义或开启外键

         延迟约束的检查

关闭和开启约束的操作

关闭:alter table 用户名。表名

Disable novalidate constraint用户名。约束名

开启:alter table 用户名。表名

          Enable validate constraint 用户名。约束名

怎样获得约束的状态信息

Select constraint_nametable_nameconstraint_typestatusdeferreddeferrablevalidated

From dba_constraints

Where owner=‘用户名’

将一个约束设置为ENABLE VALIDATE状态时可能的操作步骤

当表中没有违反约束的数据行时,可以直接设置

当表中出现违反约束的数据行时,需要先把该约束行修改或删除,然后才能设置。具体步骤如下:

!通过运行utlexpt1Sql脚本文件来建立exceptions

!执行带有exceptions选项的alter table语句

!在exceptions表上使用子查询来锁定无效的数据行

!改正错误

!重新执行带有开启约束子句的alter table语句。

怎样将一个约束重命名

Alter table 用户名。表名

Rename constraint 旧名

To 新名

怎样删除一个约束

Alter table 用户名。表名

Drop constraint 约束名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值