Podemos forçar a verificação de atualização desta forma.
Vamos supor que você tenha uma tabela como esta
create table UserTest(Id int, IsEnabled bit, [GroupId] int)
Agora, queremos verificar se apenas 1 usuário está habilitado por
[GroupId]
. Normalmente, a restrição será algo como
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId)=1)
Essa restrição não será acionada sobre o registro atualizado até que você atualize o
GroupId
.Então, temos que forçar a restrição para validar a coluna IsEnabled fazendo
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)
Não importa se você usa ou não o valor IsEnabled na função.