Nous pouvons forcer la vérification de la mise à jour de cette manière.
Supposons que vous ayez une table comme celle-ci
create table UserTest(Id int, IsEnabled bit, [GroupId] int)
Maintenant, nous voulons vérifier qu'un seul utilisateur est activé par [GroupId]
.
Habituellement, la contrainte ressemblera à quelque chose comme
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId)=1)
Cette contrainte ne sera pas déclenchée sur l'enregistrement mis à jour jusqu'à ce que vous mettiez à jour le GroupId
.
Il faut donc forcer la contrainte à valider la colonne IsEnabled en faisant
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)
Peu importe si vous utilisez ou non la valeur IsEnabled dans la fonction.