日期:2011-01-25 22:55:00 来源:本站整理
Oracle 数据库唯一约束中的NULL的处理-入门底子[Oracle防范]
本文“Oracle 数据库唯一约束中的NULL的处理-入门底子[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
按照NULL的定义,NULL表示的是未知,因此两个NULL对比的后果既不相等,也不不等,后果仍旧是未知.按照这个定义,多个NULL值的存在应当不违反唯一约束.
实际上Oracle也是如此实现的:
SQL> CREATE TABLE T (ID NUMBER);
表已成立.
SQL> ALTER TABLE T ADD UNIQUE (ID);
表已更改.
SQL> INSERT INTO T VALUES (1);
已成立 1 行.
SQL> INSERT INTO T VALUES (1);
INSERT INTO T VALUES (1)
*第 1 行呈现错误:
ORA-00001: 违反唯一约束条件 (YANGTK.SYS_C007300)
SQL> INSERT INTO T VALUES (NULL);
已成立 1 行.
SQL> INSERT INTO T VALUES (NULL);
已成立 1 行.
SQL> INSERT INTO T VALUES (NULL);
已成立 1 行.
但是当唯一约束为复合字段时,则情形发生了改变.按照Oracle文档的描写,关于复合字段的唯一约束,不为空字段的值是不能反复的.也就是说,假如两个字段构成了一个唯一约束,此中一个字段为空,那么另一个字段的值不能呈现反复.
SQL> DROP TABLE T PURGE;
表已删除.
SQL> CREATE TABLE T (ID NUMBER, ID2 NUMBER);
以上是“Oracle 数据库唯一约束中的NULL的处理-入门底子[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论