在 MS SQL 约束中创建唯一检查 + 附加检查

Create Unique Check + Additional Check in MS SQL Constraint

我需要为以下 table 添加约束:

Table(
CategoryId INT,
CustomerId INT,
IsActive BIT
....
)

我只想拥有 (CategoryId, CustomerId, IsActive = 1) 的一种组合 只是不知道如何将其置于一个约束中。 Category 和 Customer 的组合只有一个是活跃的(Active = 1),并且可以有多个 active = 0

我知道它可以通过函数来​​完成,但我正在尝试寻找一种没有它的方法。 类似于:

CONSTRAINT UN_CK_Table UNIQUE(CategoryId, CustomerId, IsActive = 1)

您可以使用过滤后的唯一索引:

CREATE UNIQUE INDEX YourTableUi1 ON YourTable (CategoryId, CustomerId) WHERE (IsActive = 1);