两个外键上的唯一约束始终是不同的组合



>我有一个名为 Followers 的表,其中包含一个 PK 列和两个 FK 列,它们将存储名为 User 的表的整数。但是,我不希望在列中复制值 - 两个 FK 的组合需要始终不同。我该怎么做?

为两列创建一个唯一键

唯一的索引或约束将解决您的问题。唯一约束在后台作为唯一索引实现,因此选择任一解决方案都很简单。

为了进行演示,让我们假设以下人为的场景。

create table User (
Id int identity primary key,
name varchar(255) not null
);
go
create table Follower (
Id int identity primary key,
UserId int foreign key references User(Id),
FollowerId int foreign key references User(Id)
);
go

为了确保UserIdFollowerId的唯一性,请添加以下唯一索引。

create unique index ux_follower_userid_followerid
on Follower
(
UsrId
,FollowerId
);
go

请注意,通常建议在外键列上也包含非聚集索引,以方便联接。

最新更新