我该如何限制两个方向?神谕

时间:2014-03-15 14:30:11

标签: sql oracle unique-constraint

我需要做约束,不要让这两行插入:

INSERT INTO table1
VALUES('LON','BUD',2000, SYSDATE);
INSERT INTO table1
VALUES('BUD','LON',2000, SYSDATE);

INSERT INTO table1
VALUES('LON','BUD',2000, SYSDATE);

所以在我看来LON,BUD等于BUD,LON

如果我需要插入例如:LON - BUD,BUD-LON,BUD-MAD ......来自另一张桌子如何在插入之前检查它?

1 个答案:

答案 0 :(得分:3)

您可以使用基于函数的索引执行此操作:

create unique index table1_col1_col2 on table1(least(col1, col2), greatest(col1, col2));

或者,您可以添加col1 < col2约束并在col1, col2上创建唯一索引。您可以通过添加插入/更新触发器来增强此功能,以便在以“错误”顺序给出时交换值。