电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Oracle 數據庫唯一約束中的NULL的處理

瀏覽:188日期:2023-11-25 10:29:32

根據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);

表已創建。

SQL> ALTER TABLE T ADD UNIQUE (ID, ID2);

表已更改?!?

SQL> INSERT INTO T VALUES (1, 1);

已創建 1 行。

SQL> INSERT INTO T VALUES (1, NULL);

已創建 1 行。 

SQL> INSERT INTO T VALUES (2, NULL);

已創建 1 行。

SQL> INSERT INTO T VALUES (1, NULL);

INSERT INTO T VALUES (1, NULL)

*第 1 行出現錯誤:

ORA-00001: 違反唯一約束條件 (YANGTK.SYS_C007301)

SQL> INSERT INTO T VALUES (NULL, NULL);

已創建 1 行。

SQL> INSERT INTO T VALUES (NULL, NULL);

已創建 1 行。

SQL> INSERT INTO T VALUES (NULL, NULL);

已創建 1 行。

對于全部為NULL的情況,仍然和單字段唯一約束一樣,不會造成重復,但是對于部分為NULL的情況,就如上面例子所示,只要其中不為NULL的部分發生了重復,Oracle就認為約束發生了重復。

而這似乎和NULL的定義有所沖突,第一次看concept的時候一直沒有搞明白Oracle為什么這么實現,不過這次再看concept的時候,已經想明白了。

由于Oracle的唯一約束是依賴索引實現的,而Oracle的BTREE索引又是不存儲NULL值的,所以鍵值全部為NULL的記錄不會記錄在索引中,因此也就不會違反唯一約束了,而對于部分為NULL的記錄,索引是要記錄數值的,因此一旦鍵值中非NULL部分發生了沖突,Oracle就認為違反了的唯一約束。

Oracle在這里還是選擇了自己的方便的方法來實現,而沒有完全真正的根據NULL的定義去實現唯一約束。

標簽: Oracle 數據庫
主站蜘蛛池模板: SMN-1/SMN-A ABB抽屉开关柜触头夹紧力检测仪-SMN-B/SMN-C-上海徐吉 | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 | 合肥升降机-合肥升降货梯-安徽升降平台「厂家直销」-安徽鼎升自动化科技有限公司 | 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 大型冰雕-景区冰雕展制作公司,3D创意设计源头厂家-[赛北冰雕] | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 全自动面膜机_面膜折叠机价格_面膜灌装机定制_高速折棉机厂家-深圳市益豪科技有限公司 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 团建-拓展-拓展培训-拓展训练-户外拓展训练基地[无锡劲途] | 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 范秘书_懂你的范文小秘书 | 上海办公室装修_上海店铺装修公司_厂房装潢设计_办公室装修 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 博莱特空压机|博莱特-阿特拉斯独资空压机品牌核心代理商 | 电子厂招聘_工厂招聘_普工招聘_小时工招聘信息平台-众立方招工网 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | PCB设计,PCB抄板,电路板打样,PCBA加工-深圳市宏力捷电子有限公司 | 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | FFU_空气初效|中效|高效过滤器_空调过滤网-广州梓净净化设备有限公司 | 存包柜厂家_电子存包柜_超市存包柜_超市电子存包柜_自动存包柜-洛阳中星 | 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 航拍_专业的无人机航拍摄影门户社区网站_航拍网 | LED投光灯-工矿灯-led路灯头-工业灯具 - 山东普瑞斯照明科技有限公司 | 博莱特空压机|博莱特-阿特拉斯独资空压机品牌核心代理商 | 板材品牌-中国胶合板行业十大品牌-环保板材-上海声达板材 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 标准件-非标紧固件-不锈钢螺栓-非标不锈钢螺丝-非标螺母厂家-三角牙锁紧自攻-南京宝宇标准件有限公司 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 桂林腻子粉_内墙外墙抗裂砂浆腻子粉推荐广西鑫达涂料厂家供应 | 不锈钢复合板|钛复合板|金属复合板|南钢集团安徽金元素复合材料有限公司-官网 | 圣才学习网-考研考证学习平台,提供万种考研考证电子书、题库、视频课程等考试资料 | 实木家具_实木家具定制_全屋定制_美式家具_圣蒂斯堡官网 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 广东教师资格网-广东教师资格证考试网 | 彩信群发_群发彩信软件_视频短信营销平台-达信通 | 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 |