WEB开发网
开发学院数据库Oracle Oracle数据库的完整性约束规则详解 阅读

Oracle数据库的完整性约束规则详解

 2007-05-11 12:22:07 来源:WEB开发网   
核心提示: ON DELETE子串告诉ORACLE如果父纪录(parent record)被删除后,子记录做什么,Oracle数据库的完整性约束规则详解(5),缺省情况下禁止在子记录还存在的情况下删除父纪录,外部键和NULL值在外部键约束保护的数据列中NULL值的处理可能产生不可预料的结果,序列号可以

ON DELETE子串告诉ORACLE如果父纪录(parent record)被删除后,子记录做什么。缺省情况下禁止在子记录还存在的情况下删除父纪录。

外部键和NULL值

在外部键约束保护的数据列中NULL值的处理可能产生不可预料的结果。ORACLE 使用ISO standar Match None规则增强外部键约束。这个规则规定如果任何外部键作用的数据列包含有一个NULL值,那么任何保留该键的数据列在父表中没有匹配值。

比如,在父表AUTOMOBILES中,主键作用于数据列MAKE,MODEL,YEAR上,用户使用的表INSURED_AUTOS有一个外部约束指向AOTOMOBILES,注意在INSURES_AUTOS中有一数据行的MODEL列为NULL值,这一行数据已经通过约束检查,即使MAKE列也没有显示在父表AUTOMOBILES中,如下表:

表1 AUTOMOBILES

表2 INSURED_AUTOS

延迟约束检验(Deferred Constraint Checking)

约束检验分两种情况,一种是在每一条语句结束后检验数据是否满足约束条件,这种检验称为立即约束检验(immediately checking),另一种是在事务处理完成之后对数据进行检验称之为延迟约束检验。在缺省情况下Oracle约束检验是立即检验(immediately checking),如果不满足约束将先是一条错误信息,但用户可以通过SET CONSTRAINT语句选择延迟约束检验。语法如下:

SET CONSTRAINT constraint_name|ALL DEFEERRED|IMMEDIATE --;

序列(Sequences)

Oracle序列是一个连续的数字生成器。序列常用于人为的关键字,或给数据行排序否则数据行是无序的。像约束一样,序列只存在于数据字典中。序列号可以被设置为上升、下降,可以没有限制或重复使用直到一个限制值。创建序列使用SET SEQUENCE语句。

上一页  1 2 3 4 5 6  下一页

Tags:Oracle 数据库 完整性

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接