我有3列:A, B, C
。
A
是pkid,B
和C
是变体。我已经写了这样一个约束:
CONSTRAINT UNIQUE_DATA1 UNIQUE(B, C)
。这可以防止两次插入值“x”和“y”,但如果“x”和“y”值已经存在,我还想阻止插入“y”和“x”。
有没有办法把这个约束放进去?
答案 0 :(得分:1)
您可以创建基于函数的索引:
create unique index unique_data2 (least(b,c), greatest(b,c));
仅当两个值都不能为空时才会起作用。如果他们能做到这样的事情:
create unique index unique_data2
( least(nvl(b,'~),nvl(c,'~'))
, greatest(nvl(b,'~),nvl(c,'~'))
);
其中'〜'是一个你知道永远不会是b或c的实际值的字符串。