Vi kan tvinga fram kontrollen av uppdateringen på det här sättet.
Anta att du har en sådan här tabell
create table UserTest(Id int, IsEnabled bit, [GroupId] int)
Nu vill vi kontrollera att endast 1 användare är aktiverad av [GroupId]
.
Vanligtvis ser begränsningen ut ungefär som
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId)=1)
Denna begränsning kommer inte att utlösas över posten som har uppdaterats förrän du uppdaterar GroupId
.
Så vi måste tvinga begränsningen för att validera IsEnabled-kolumnen genom att göra
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)
Det spelar ingen roll om du använder IsEnabled-värdet i funktionen eller inte.