Postgres 如何使 2 个数字字段彼此唯一
Postgres how can I make 2 numerical fields unique to each other
我正在尝试做一个许多社交网络都有的 following/follower 类型的概念。我有 2 个名为 me 和 following 的 INT 字段,这些 INT 字段由用户唯一 ID 组成。我想这样做,如果用户 23 正在关注用户 7 或 23->7,则用户 23 无法再次关注用户 7,因为该关系已经存在。这张照片会把事情搞清楚
注意上面的前两行是 31->27 或者用户 31 跟随 27 两次是多余的。我可以使用一些约束来防止这种情况发生吗?我正在使用 postgres 版本 9.4
您可以通过创建唯一索引来做到这一点。但不仅仅是任何唯一索引,一个关于表达式:
create unique index unq_t_me_following
on (least(me, following), greatest(me, following));
我正在尝试做一个许多社交网络都有的 following/follower 类型的概念。我有 2 个名为 me 和 following 的 INT 字段,这些 INT 字段由用户唯一 ID 组成。我想这样做,如果用户 23 正在关注用户 7 或 23->7,则用户 23 无法再次关注用户 7,因为该关系已经存在。这张照片会把事情搞清楚
注意上面的前两行是 31->27 或者用户 31 跟随 27 两次是多余的。我可以使用一些约束来防止这种情况发生吗?我正在使用 postgres 版本 9.4
您可以通过创建唯一索引来做到这一点。但不仅仅是任何唯一索引,一个关于表达式:
create unique index unq_t_me_following
on (least(me, following), greatest(me, following));