基于另一列的约束列值?数据库服务器

lel*_*lel 2 sql-server unique-constraint

我想根据membershipType 列设置我的默认列Y 或N。根据membershipType 列中的3 个不同值,defaults 列中只能有一个Y。除此之外,其他人将是 N。我该怎么做?

ID  titlePromo   membershipType         defaults
--  ----------   --------------         ------
1    Promo 1     Membership Promotion      Y
2    Promo 2     Membership Renewal        Y
3    Promo 3     Membership Grad           Y
4    Promo 4     Membership Promotion      N
5    Promo 5     Membership Promotion      N
6    Promo 6     Membership Grad           N
Run Code Online (Sandbox Code Playgroud)

Rob*_*ley 5

使用唯一的过滤索引。

CREATE UNIQUE INDEX uixDefault 
ON dbo.Promotions(membershipType)
WHERE defaults = 'Y';
Run Code Online (Sandbox Code Playgroud)

这停止了​​具有defaults='Y'相同membershipType的第二行。