2016-12-01 20 views
-2

這裏唯一的限制是3列與所有空值或全部唯一值

(UNIQUE_VALUE, UNIQUE_VALUE1, UNIQUE_GROUP_ID) 

樣品臺我想下面的記錄可以被允許:

(NULL, NULL, NULL) 
(NULL, NULL, NULL) 
or 

(3, 5, 7) 
(4, 123, 7) 

但它給錯誤時輸入如下所示。

(3, 5, 7) 
(3, 5, 7) 

請幫忙。

CREATE TABLE sample (
    unique_value NUMBER, 
    unique_value1 NUMBER, 
    unique_group_id NUMBER, 
    CONSTRAINT sample__v__v1__gid__u UNIQUE(unique_value, unique_value1, unique_group_id) 
); 

然後:

+0

什麼是你所得到的錯誤,並發表您的表定義爲逢 – XING

+0

什麼(3,5,空)或(NULL,NULL ,7)他們是否被允許? –

+0

@Tony是的,它應該允許 – rathodr

回答

3

您可以只使用一個UNIQUE約束允許重複NULL

INSERT INTO sample 
SELECT null, null, null FROM DUAL UNION ALL 
SELECT null, null, null FROM DUAL UNION ALL 
SELECT 3, 5, 7 FROM DUAL UNION ALL 
SELECT 4, 123, 7 FROM DUAL; 

將插入4行;但隨後試圖做:

INSERT INTO sample VALUES (3, 5, 7); 

將引發異常ORA-0001: unique constraint (TEST.sample__v__v1__gid__u) violated