跨多个 table 列设置唯一约束

Set a unique constraint across multiple table columns

我正在 SQL 服务器中创建一个 table,其中包含以下列:

ic_card_num, 
employee_id, 
active

如果只有一张卡处于活动状态,ic_card_num 和活动的多个副本是可以的:

employee_id | ic_card_num |  active       
   123      |    111      |   false      
   235      |    111      |   true      
   987      |    111      |   false      

我想避免这种情况:

employee_id | ic_card_num |  active       
   123      |    111      |   true      
   235      |    111      |   true      
   987      |    111      |   false      

我正在使用 SQL 服务器,有没有办法确保在我的 table 中不允许超过一个活动 id_card_num 记录?

使用唯一过滤索引:

create table ct
(
  ic_card_num int,
  employee_id int,
  active bit
)

create unique index ak_OnlyOneActive_ic_card 
on ct(ic_card_num) 
where active = 1

insert into ct(employee_id, ic_card_num, active)
values (123,111,1),(978,111,0)
go

insert into ct(employee_id, ic_card_num, active)
values (235,111,1)
--Cannot insert duplicate key row in object 'dbo.ct' with unique index 'ak_OnlyOneActive_ic_card'. The duplicate key value is (111).