检查约束以仅允许两列的一个组合

时间:2015-11-20 11:43:30

标签: sql-server data-modeling check-constraint

我有一张表来存储人的电话号码。有一个标志(IsDefault)将手机标记为默认手机。每个人应该只有一部手机被标记为默认手机。 是否可以创建一个检查约束以仅允许PersonId和IsDefault = True的一个组合?

1 个答案:

答案 0 :(得分:1)

使用过滤后的索引,如下所示:

CREATE TABLE PhoneNumber (
ID int primary key,
PhoneNumber nvarchar(20),
PersonID int,
IsDefault bit
)
GO

CREATE UNIQUE INDEX UX_Default_PhoneNumber
ON PhoneNumber(PersonID)
WHERE IsDefault = 1
GO

仅在IsDefault为真的情况下强制执行唯一的PersonID。