ORACLE的约束

一、验证约束

1.验证约束

如果约束处于验证状态,则在定义或激活约束时,Oracle将对表中所有已有的记录进行验证,检查是否满足约束限制。

2.非验证约束

如果约束处于非验证约束,则在定义或激活约束时,Oracle将对表中已有记录不执行验证操作。

 

如果将禁止、激活、验证和非验证状态相互组合,则可以将约束分为4中状态,如下表:

状态说明
激活验证状态 
(ENABLE VALIDATE)
默认状态。Oracle不仅对以后添加和更新的数据进行约束检查,也会对已经存在的数据检查约束
激活非验证状态 
(ENABLE NOVALIDATE)
Oracle只对以后添加和更新的数据进行约束检查
禁止验证状态 
(DISABLE VALIDATE)
Oralce对已经存在的数据检查约束,但是不允许对表执行添加和更新操作
禁止非验证状态 
(DISABLE NOVALIDATE)
无论是表中已存在的记录,还是以后添加和更新的操作,Oracle都不进行约束检查

 

切换约束状态的SQL语句:

ALTER TALBE table_name

MODIFY CONSTRAINT constraint_name [DIS|EN]ABLE  [NO]VALIDATE;

 

二、延迟约束

在延迟约束下,Oralce对添加和更新的数据,不会立即执行约束检查,这样用户可以改变检查的时机,如将约束检查放在事务结束后进行。

INITIALLY DEFERRED约束的初始状态是延迟检查
INITIALLY IMMEDIATE约束的初始状态是立即检查

 

SQL语句:

ALTER TALBE table_name

MODIFY CONSTRAINT constraint_name INITIALLY [DEFERRAED | IMMEDIATE];

 

三、检查约束信息

1.USER_CONSTRAINTS中的约束信息

USER_CONSTRAINTS视图中部分列的说明

类型说明
ownerVARCHAR2(30)约束的所有者
constraint_nameVARCHAR2(30)约束名
constraint_typeVARCHAR2(1)约束类型(P、R、C、U、V、O)
table_nameVARCHAR2(30)约束所属的表
statusVARCHAR2(8)约束状态(ENABLE、DISABLE)
deferrableVARCHAR2(14)约束是否也延迟(DEFERRABLE、NOTDEFERRABLE)
deferredVARCHAR2(9)约束是立即执行还是延迟执行(IMMEDIATE、DEFERRED)

2.USER_CONS_COLUMNS中的约束列

USER_CONS_COLUMNS视图中部分列的说明

类型说明
ownerVARCHAR2(30)约束的所有者
constraint_nameVARCHAR2(30)约束名
table_nameVARCHAR2(30)约束所属的表
column_nameVARCHAR2(4000)约束所定义的列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值