简体   繁体   English

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

[英]SQL server conditional unique constraint - Composite keys

I have a situation where i need to enforce a unique constraint on a set of columns, but only for one value of a column. 我有一种情况,我需要对一组列强制执行唯一约束,但只对列的一个值。 Suppose there is a table named Person and columns 'Name' and 'isActive' Following should be the results 假设有一个名为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

Basically what I need is that same name and active=1 rows should not be repeated. 基本上我需要的是同名和active = 1行不应该重复。

尝试过滤的唯一索引

create unique index index_name on Person (name) where isActive = 1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM