【问题标题】:Postgres how can I make 2 numerical fields unique to each otherPostgres如何使2个数字字段彼此唯一
【发布时间】:2016-02-02 17:05:43
【问题描述】:

我正在尝试做许多社交网络都有的追随者/追随者类型的概念。我有 2 个名为 mefollowing 的 INT 字段,这些 INT 字段由用户唯一 ID 组成。我想这样做,如果用户 23 正在关注用户 7 或 23->7,那么用户 23 不能再次关注用户 7,因为关系已经存在。这张图就清楚了

注意上面前 2 行是 31->27 或用户 31 跟随 27 两次,这是多余的。是否有一些约束可以用来防止这种情况发生?我正在使用 postgres 9.4 版

【问题讨论】:

    标签: postgresql postgresql-9.3 postgresql-9.4


    【解决方案1】:

    您可以通过创建唯一索引来做到这一点。但不仅仅是任何唯一索引,一个关于表达式的:

    create unique index unq_t_me_following
        on (least(me, following), greatest(me, following));
    

    【讨论】:

      猜你喜欢
      • 2011-02-19
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多