如何创建不考虑列顺序的唯一索引(设置?)

时间:2015-01-12 19:23:48

标签: sql postgresql

表格中有两列:Object1Object2。 我想让pair(Object1Object2)以一种不允许插入两行的方式唯一(

Object1 = 1, Object2 = 2
Object1 = 2, Object2 = 1

1 个答案:

答案 0 :(得分:2)

您可以在表达式上创建索引,在本例中为least()greatest()

create unique index idx_obj1_obj2 on table(least(Object1, Object2), greatest(Object1, Object2));

注意:如果列允许NULL值,则会有一点奇怪。在这种情况下,相同的值只允许一次,无论它在哪一列。如果它实际上是一个问题,可以用更复杂的表达式修复。