Vi kan tvinge check på opdatering på denne måde.
Lad os antage, at du har et bord som dette
create table UserTest(Id int, IsEnabled bit, [GroupId] int)
Nu vil vi kontrollere, at kun 1 bruger er aktiveret af [GroupId]
.
Normalt vil begrænsningen ligne
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId)=1)
Denne begrænsning vil ikke blive udløst over registreringen, der er blevet opdateret, før du opdaterer GroupId
.
Så vi er nødt til at tvinge begrænsningen til at validere IsEnabled-kolonnen ved at gøre
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)
Uanset om du bruger IsEnabled-værdien i funktionen eller ej.