Postgres如何使2个数字字段彼此唯一
Posted
技术标签:
【中文标题】Postgres如何使2个数字字段彼此唯一【英文标题】:Postgres how can I make 2 numerical fields unique to each other 【发布时间】:2016-02-02 17:05:43 【问题描述】:我正在尝试做许多社交网络都有的追随者/追随者类型的概念。我有 2 个名为 me 和 following 的 INT 字段,这些 INT 字段由用户唯一 ID 组成。我想这样做,如果用户 23 正在关注用户 7 或 23->7,那么用户 23 不能再次关注用户 7,因为关系已经存在。这张图就清楚了
注意上面前 2 行是 31->27 或用户 31 跟随 27 两次,这是多余的。是否有一些约束可以用来防止这种情况发生?我正在使用 postgres 9.4 版
【问题讨论】:
【参考方案1】:您可以通过创建唯一索引来做到这一点。但不仅仅是任何唯一索引,一个关于表达式的:
create unique index unq_t_me_following
on (least(me, following), greatest(me, following));
【讨论】:
以上是关于Postgres如何使2个数字字段彼此唯一的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Postgres 9.6+ 中生成长度为 N 的随机、唯一的字母数字 ID?
如何使唯一数组的自定义验证规则依赖于其他字段 laravel
Django 中的唯一模型字段和区分大小写(postgres)
Django 中的唯一模型字段和区分大小写(postgres)