Можем да принудим проверката на актуализацията по този начин.
Да предположим, че имате таблица като тази
create table UserTest(Id int, IsEnabled bit, [GroupId] int)
Сега искаме да проверим дали само 1 потребител е активиран от [GroupId]
.
Обикновено ограничението ще изглежда нещо като
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId)=1)
Това ограничение няма да бъде задействано върху актуализирания запис, докато не актуализирате GroupId
.
Така че трябва да принудим ограничението да потвърди колоната IsEnabled, като направим
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)
Няма значение дали използвате или не стойността IsEnabled във функцията.