1. 首页 > ITPUX技术网 > 正文

oracle 中约束的应用

如果禁用约束条件,则可以在数据库中输入不符合规则的数据。启用约束:enable( validate) :启用约束,创建索引,[color=white]对已有及新加入的数据执行约束.enable novalidate :启用约束,创建索引,[color=white]仅对新加入数据强制执行约束,而不管表中现有数据. 禁用约束:disable( novalidate):关闭约束,删除索引,[color=white]可以对约束列的数据进行修改等操作[color=white].disable validate :关闭约束,删除索引,[color=white]不能对表进行[color=white] [color=white]插入[color=white]/[color=white]更新[color=white]/[color=white]删除等操作[color=white]. INITIALLY IMMEDIATE 初始化立即执行–在[color=#C00000]每条语句执行结束时检验约束INITALLY DEFERRED 初始化延迟执行,一直等到[color=#C00000]事务完成后(或者调用 set constraint immediate 语句时)才检验约束注意,你也可以对一个约束使用该命令,你不必让所有可延迟的约束都变为延迟执行的:[color=white]SQL>setconstraints all deferred; 或者[color=white] SQL> set constraints allimmediate;延迟约束有哪些实际用处呢? 有很多。[color=#C00000]它主要用于物化视图(快照)。这些视图会使用[color=#C00000]延迟约束来进行视图刷新。在刷新物化视图的过程中,可能会破坏完整性,而且将不能逐句检验约束。但到执行[color=#C00000] COMMIT 时,数据完整性就没问题了,而且[color=#C00000]能满足约束。没有延迟约束,物化视图的约束可能会使刷新过程不能成功进行。使用延迟约束的另一个普遍原因是,当预测是否需要[color=#C00000]更新父[color=#C00000]/[color=#C00000]子关系中的主键时,它有助于[color=#C00000]级联更新。 如果你将外键设为可延迟、但初始化为立即执行,那么你就可以将所有约束设置为可延迟。将父键更新为一个新值–至此子关系的完整性约束不会被验证。将子外键更新为这个新值。COMMIT–只要所有受更新影响的子记录都指向现有的父记录,这条命令就能成功执行。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息