如何使两列独特作为一个组合?

时间:2016-03-01 00:14:27

标签: sql sql-server

我有桌友,定义为

UserId int PrimaryKey

OtherUserId int PrimaryKey

目前,我有以下数据

UserId OtherUserId

1 2

我不想要像

这样的重复名单

UserId OtherUserId

2 1

如何使用SQL Server实现此功能?

2 个答案:

答案 0 :(得分:1)

您可以通过添加计算列然后添加唯一索引来执行此操作:

alter table friends UserId_least as (case when UserId < OtherUserId then UserId else OtherUserId end);

alter table friends UserId_greatest as (case when UserId < OtherUserId then OtherUserId else UserId end);

create unique index unq_friends_least_greatest
    on friends(UserId_least, UserId_greatest);

答案 1 :(得分:1)

你的问题有点宽泛。请注意,每张桌子只能有一个主键,因为它是身份证明。至于数据,您可以尝试使用自动增量而不是null以避免重复的答案。