Oracle之表示约束状态的关键字Enable/Disable/Validate/Novalidate

本文详细介绍了Oracle数据库中约束的关键字Enable/Disable/Validate/Novalidate的用法和含义。约束的状态包括ENABLEVALIDATE、ENABLENOVALIDATE、DISABLEVALIDATE和DISABLENOVALIDATE,分别对应于约束对新旧数据的检查情况。文章指出,Enable/Disable作用于未来数据,而Validate/Novalidate则针对已有数据。通过示例展示了如何使用这些关键字来管理约束状态。
摘要由CSDN通过智能技术生成
分类: [oracle]--[PL/SQL]

小结:
enable/disable对未来的数据有约束/无约束。


validate/novalidate对已有的数据有约束/无约束。



 约束有如下四种状态

 (1)ENABLEVALIDATE:约束在创建时,默认就是此状态。此状态会“检查表中原有行和新插入的行”。

 (2)ENABLENOVALIDATE:不能输入违反约束的新数据。但是,在创建约束时,并不检查表中原有行。

 (3)DISABLEVALIDATE:检查表中原有行是否违反约束,表中可以插入违反约束的行。

 (4)DISABLENOVALIDATE:约束处于禁用状态,且此状态检查表中原有数据是否违反约束.

参考博客:

http://blog.csdn.net/guoyjoe/article/details/8640270


注释:
1、
表中,未来的数据和已有的数据:
已有的数据,表示执行alter table test validate(或是Novalidate) constraint ck_id前已经在表test中存在的数据,或是执行alter table test validate(或是Novalidate) constraint ck_id后每当执行了一次DML操作引起了存放于表中的数据的变化时都会进行一次约束条件检查,而进行该约束条件检查时存在于表中的数据也被称作已有的数据。
未来的数据,表示执行alter table test Enable/Disable constraint ck_id后每当执行了一次DML操作时在修改后的数据存入表中来替代修改前值之前会进行一次约束条件检查。

2、

Enable/Disable和Validate/Novalidate这两组关键字修饰的都是同一个对象,即constraint这种类型的对象。

在修饰同一个对象时,两组关键字间是并列关系,即Enable/Disable这组关键字作用在未来的数据(即表上插入/更新/删除的数据)上,而Validate/Novalidate这组关键字作用在表上已有的数据上。

上图中,?表示不受约束条件限制,√表示受约束条件限制。
这里要说说×表示什么意思?

disable和validate组合在一起时,由于disable是表示对未来的数据不受约束条件限制,即对DML操作修改过的数据都不进行约束条件检查。现在假设一条不符合约束条件的数据插入了表中,而Validate/Novalidate这组关键字是每次表中的数据有变化时进行一次约束条件检查,故而当Validate在该条不符合约束条件的数据插入了表后进行了一次约束条件检查,发现该数据不符合约束条件,就会报错。由此看出disable和validate组合在一起时,DML操作修改的数据存放在表中有可能会不符合约束条件,所以oracle设计人员就规定disable和validate组合在一起时不允许进行DML操作对该表。所以,X表示不允许执行DML操作的意思。所以,如果你不想某个表被DML操作修改,则可以采用disable和validate组合在一起的方法。


===============================================================================================

1组合特性说明

Enable/Disable和Validate/Novalidate这两组关键字修饰的都是同一个对象,即constraint这种类型的对象。

Validate的作用:      确保已有数据符合约束;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值