| yy 的个人资料每天都要做出不同的选择日志列表 | 帮助 |
|
7月4日 完整性约束的状态在学习的过程中,自己看了好几遍还是不能把约束的四种状态分清楚,经过一个高人指点,终于茅塞顿开,现在,把我的理解过程跟大家分享一下: 完整性约束可以是以下的其中一种转态: l 禁止非验证(DISABLE NOVALIDATE) l 禁止验证(DISABLE VALIDATE) l 允许非验证(ENABLE NOVALIDATE) l 允许验证(ENABLE VALIDATE)
怎么理解这四种状态呢,它们之间又有什么区别,我们可以这样来理解,数据库中的数据是分为新数据(New data) 和 现有数据(Existing data)的,而禁止(DISABLE)与允许(ENABLE)是针对新数据(New data)的,验证与非验证是针对现有数据(Existing data)的。 让我们先来理解允许、禁止以及验证非验证的含义: 如果约束是允许(ENABLE)的,当New data在插入或更新的时候会被检测,凡是不符合约束规则的数据都不允许被插入; 如果约束是禁止(DISABLE)的,当New data在插入或更新的时候,不管是否符合约束规则都能够进入数据库。 如果约束被设为非验证状态(NOVALIDATE),那么不管数据库中的现有数据(Existing data)是否符合约束规则,都不需要进行验证。 如果约束被设为验证状态(VALIDATE),那么就会对数据库中所有的现有数据(Existing data)进行验证,而如果约束是从非验证状态转为验证状态,那么就要先把那些不满足条件的数据删除或更新。 禁止验证(DISABLE VALIDATE)是属于一个特殊的状态,如果约束处于这一状态,则对约束字段的任何修改都是不允许的,也就是不允许任何的DML操作,就相当与该约束字段被锁定了。另外,基于约束的索引也会被删除,约束被禁止。 引用通告此日志的引用通告 URL 是: http://zheng-yy.spaces.live.com/blog/cns!9EF6623D1A03E61A!129.trak 引用此项的网络日志
|
|
|