Postgresql Postgres如何使两个数值字段彼此唯一

Postgresql Postgres如何使两个数值字段彼此唯一,postgresql,postgresql-9.3,postgresql-9.4,Postgresql,Postgresql 9.3,Postgresql 9.4,我正在尝试一种许多社交网络都有的跟随者/追随者类型的概念。我有两个INT字段,分别称为me和following,这些INT字段由用户的唯一ID组成。我想这样做,如果用户23跟随用户7或23->7,那么用户23就不能再跟随用户7,因为关系已经存在。这张照片会把事情弄清楚的 注意上面的前两行是31->27,或者用户31跟随27两次,这是多余的。我是否可以使用一些约束来防止这种情况发生?我使用的是postgres 9.4版您可以通过创建一个唯一的索引来实现这一点。但不仅仅是任何唯一的索引,还有一个关

我正在尝试一种许多社交网络都有的跟随者/追随者类型的概念。我有两个INT字段,分别称为mefollowing,这些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));