检查约束以仅允许两列的一种组合
Check constraint to allow only one combination of two columns
我有一个 table 来存储人的 phone 号码。有一个标志 (IsDefault) 将 phone 标记为默认值。每个人应该只有一个 phone 标记为默认 phone。
是否可以创建一个检查约束以仅允许 PersonId 和 IsDefault = True 的一种组合?
使用过滤索引,像这样:
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。
我有一个 table 来存储人的 phone 号码。有一个标志 (IsDefault) 将 phone 标记为默认值。每个人应该只有一个 phone 标记为默认 phone。 是否可以创建一个检查约束以仅允许 PersonId 和 IsDefault = True 的一种组合?
使用过滤索引,像这样:
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。