根據NULL的定義
實際上Oracle也是如此實現的
SQL> CREATE TABLE T (ID NUMBER);
表已創建
SQL> ALTER TABLE T ADD UNIQUE (ID);
表已更改
SQL> INSERT INTO T VALUES (
已創建
SQL> INSERT INTO T VALUES (
INSERT INTO T VALUES (
*第
ORA
SQL> INSERT INTO T VALUES (NULL);
已創建
SQL> INSERT INTO T VALUES (NULL);
已創建
SQL> INSERT INTO T VALUES (NULL);
已創建
但是當唯一約束為復合字段時
SQL> DROP TABLE T PURGE;
表已刪除
SQL> CREATE TABLE T (ID NUMBER
表已創建
SQL> ALTER TABLE T ADD UNIQUE (ID
表已更改
SQL> INSERT INTO T VALUES (
已創建
SQL> INSERT INTO T VALUES (
已創建
SQL> INSERT INTO T VALUES (
已創建
SQL> INSERT INTO T VALUES (
INSERT INTO T VALUES (
*第
ORA
SQL> INSERT INTO T VALUES (NULL
已創建
SQL> INSERT INTO T VALUES (NULL
已創建
SQL> INSERT INTO T VALUES (NULL
已創建
對於全部為NULL的情況
而這似乎和NULL的定義有所沖突
由於Oracle的唯一約束是依賴索引實現的
Oracle在這裡還是選擇了自己的方便的方法來實現
From:http://tw.wingwit.com/Article/program/Oracle/201311/18438.html