ORACLE数据完整性检查

oracle系统一共提供了以下5种与约束:

1、非空(not null)约束:所定义的列不能为空。

2、唯一(unique)约束:在表中每一行中所定义的这个列或这些列的值不能为空。

3、主键(primary key)约束:指定一列或几列的组合为该表的主键,主键唯一标识表中的一行(当然oracle数据库中的表中隐含一个rowid的列,它也唯一标识表中一行),并且主键不能为空值。

4、外键(foreign key)约束:指明一列或几列的组合为外键以维护从表与主表之间的引用完整。

5、条件(check)约束:表中每一行都要满足该约束的条件。

约束是加在表上的,因为表中存有数据。既可以在创建表(create table)时定义约束,也可以在已经存在的表(alter table)上定义约束。

约束可以定义在列一级也可以定义在表一级,查看约束要在oracle的数据字典里浏览,

在建立约束时,可以给出约束名称也可以不给出,oracle系统将为约束自动生成一个名称,格式为SYS_Cn,其中n为大于零的自然数。

当一张表中的约束过多时会影响到oracle数据库的效率(这结论容易推出)。

约束存在4种状态,并且任何一个约束都处于4种中的一种状态!

1、disable novalidate 禁止而无效:表示表中的已有数据没有作约束检查,并且新加入的数据也不会作约束检查。

2、disable validate 禁止而有效:表示表中已有数据作了约束检查,但新加入数据不会检查。

3、enable novalidate 激活而无效:表示表中数据没有约束检查,但新加入的数据会约束检查。

4、enable validate 激活而有效:表示表中数据作了约束检查并且新加入数据也会约束检查。

oracle完整性约束的各种状态之间的变化遵循以下原则:

1、如果在激活约束时没有说明novalidate,就意味着enable validate。

2、如果在禁止约束时没有说明validate,就意味着disable novalidate。

3、如果唯一约束或主键约束从禁止状态变为激活状态时没有索引,oracle系统会自动地为之建立一个唯一索引。相反地会删除这个唯一索引。

4、当任何一个约束从无效变为有效时,oracle系统会检查所有数据。相反则不会。

5、将一个约束从激活无效状态变为激活有效状态时,oracle系统并不阻塞任何读、写操作及其它DDL语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值