【发布时间】:2015-01-12 19:23:47
【问题描述】:
我在一个表中有两列:Object1 和 Object2。
我想让 pair (Object1, Object2) 独一无二,它不允许像这样插入两行:
Object1 = 1, Object2 = 2
Object1 = 2, Object2 = 1
【问题讨论】:
标签: sql postgresql
我在一个表中有两列:Object1 和 Object2。
我想让 pair (Object1, Object2) 独一无二,它不允许像这样插入两行:
Object1 = 1, Object2 = 2
Object1 = 2, Object2 = 1
【问题讨论】:
标签: sql postgresql
您可以在表达式上创建索引,在本例中为 least() 和 greatest():
create unique index idx_obj1_obj2 on table(least(Object1, Object2), greatest(Object1, Object2));
注意:如果列允许NULL 值,则会有一点奇怪。在这种情况下,相同的值只允许出现一次,无论它位于哪个列。如果确实存在问题,可以使用更复杂的表达式来解决此问题。
【讨论】: