【问题标题】:Unique constraint for 2 columns that works both ways [duplicate]双向工作的2列的唯一约束[重复]
【发布时间】:2021-06-10 19:33:16
【问题描述】:

我有一张朋友桌

| id | requestor | requestee | status |

requestor 和 requestee 都是 userIds

我想拥有一组独特的关系,所以如果 id:1 请求与 id:2 成为朋友,反之亦然。

我尝试使用 requestor 和 requestee 列添加唯一约束,但如果存在 2 1 则允许 1 2。

我还能怎么做?在进行约束以使其涵盖两种组合时是否有某种标志?

如果这是实现此目的的正确方法,我也愿意以不同的方式构建它/添加新表。

非常感谢

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    您可以创建一个始终索引相同顺序值的唯一索引:

    create unique index 
       on friends (least(requestor, requestee), greatest(requestor, requestee));
    

    【讨论】:

    • 行得通,谢谢
    猜你喜欢
    • 2016-03-13
    • 2017-04-23
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2019-02-27
    • 2017-02-23
    • 2012-11-06
    • 2013-05-25
    相关资源
    最近更新 更多