以下是包含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)
请帮忙。
答案 0 :(得分:3)
您只需使用NULL
约束即可允许重复的UNIQUE
值:
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 )
);
然后:
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