我有一个包含这些列的表:
ID (int)
Customer_Number (int)
Is_Deleted (bit)
Details (nvarchar)
我需要为表格创建一个触发器,以便在尝试从“真实”列中更改Is_Deleted
列时阻止更新行。到'假'虽然已经在Is_Deleted
上拥有另一个具有相同客户编号和错误值的不同现有行(我不能允许false
中具有Is_Deleted
值的相同客户编号的两行}专栏)。
答案 0 :(得分:5)
没有触发器。
create unique index t_ix_Customer_Number_Is_Deleted_0
on t (Customer_Number)
where Is_Deleted = 0
insert into t (ID,Customer_Number,Is_Deleted) values (1,1,1),(2,1,0),(3,1,1),(4,1,1)
(4行(s)受影响)
update t set Is_Deleted = 0 where ID = 1
Msg 2601,Level 14,State 1,Line 5
无法插入重复的键行 具有唯一索引't_ix_Customer_Number_Is_Deleted_0'的对象'dbo.t'。 重复键值为(1) 声明已经终止。