W ten sposób możemy wymusić sprawdzenie aktualizacji.
Załóżmy, że masz taką tabelę
create table UserTest(Id int, IsEnabled bit, [GroupId] int)
Teraz chcemy sprawdzić, czy tylko 1 użytkownik jest włączony przez [GroupId]
.
Zazwyczaj ograniczenie będzie wyglądać mniej więcej tak
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId)=1)
To ograniczenie nie zostanie uruchomione po zaktualizowaniu rekordu, dopóki nie zaktualizujesz GroupId
.
Więc musimy wymusić na ograniczeniu walidację kolumny IsEnabled, wykonując
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)
Nie ma znaczenia, czy użyjesz wartości IsEnabled w funkcji.