【问题标题】:How to create unique index where column order is not taken into account (set?) [duplicate]如何在不考虑列顺序的情况下创建唯一索引(设置?)[重复]
【发布时间】:2015-01-12 19:23:47
【问题描述】:

我在一个表中有两列:Object1Object2。 我想让 pair (Object1, Object2) 独一无二,它不允许像这样插入两行:

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

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

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

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

    注意:如果列允许NULL 值,则会有一点奇怪。在这种情况下,相同的值只允许出现一次,无论它位于哪个列。如果确实存在问题,可以使用更复杂的表达式来解决此问题。

    【讨论】:

    • 哇,太聪明了:),谢谢。我的列不允许 NULL,所以这就是我要找的。​​span>
    猜你喜欢
    • 2013-08-22
    • 1970-01-01
    • 2023-01-30
    • 2013-05-20
    • 1970-01-01
    • 2011-10-09
    • 2018-06-14
    • 1970-01-01
    • 2013-11-13
    相关资源
    最近更新 更多