Tímto způsobem můžeme vynutit kontrolu aktualizace.
Předpokládejme, že máte tabulku jako je tato
create table UserTest(Id int, IsEnabled bit, [GroupId] int)
Nyní chceme zkontrolovat, zda je pomocí [GroupId]
povolen pouze 1 uživatel .
Obvykle bude omezení vypadat nějak takto
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId)=1)
Toto omezení se při aktualizaci záznamu nespustí, dokud neaktualizujete GroupId
.
Musíme tedy vynutit omezení, aby ověřilo sloupec IsEnabled provedením
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)
Nezáleží na tom, zda ve funkci použijete nebo nepoužíváte hodnotu IsEnabled.