SQL server条件唯一约束 - 复合键

问题描述 投票:1回答:1

我有一种情况,我需要对一组列强制执行唯一约束,但只对列的一个值。假设有一个名为Person的表,列'Name'和'isActive'以下应该是结果

INSERT INTO Person (name,isActive) VALUES ('testUser1',0); --Success
INSERT INTO Person (name,isActive) VALUES ('testUser1',1); --Success
INSERT INTO Person (name,isActive) VALUES ('testUser1',0); --Success
INSERT INTO Person (name,isActive) VALUES ('testUser1',1); --Failure
INSERT INTO Person (name,isActive) VALUES ('testUser1',0); --Success

INSERT INTO Person (name,isActive) VALUES ('testUser2',0); --Success
INSERT INTO Person (name,isActive) VALUES ('testUser2',1); --Success
INSERT INTO Person (name,isActive) VALUES ('testUser2',0); --Success
INSERT INTO Person (name,isActive) VALUES ('testUser2',1); --Failure
INSERT INTO Person (name,isActive) VALUES ('testUser2',0); --Success

基本上我需要的是同名和active = 1行不应该重复。

sql sql-server unique-constraint composite-key
1个回答
3
投票

试试filtered unique index

create unique index index_name on Person (name) where isActive = 1
© www.soinside.com 2019 - 2024. All rights reserved.