Podemos forzar la verificación de la actualización de esta manera.
Supongamos que tiene una tabla como esta
create table UserTest(Id int, IsEnabled bit, [GroupId] int)
Ahora, queremos verificar que solo 1 usuario esté habilitado por [GroupId]
.
Por lo general, la restricción se verá como
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId)=1)
Esta restricción no se activará sobre el registro actualizado hasta que actualice el GroupId
.
Entonces, tenemos que forzar la restricción para validar la columna IsEnabled haciendo
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)
No importa si usa o no el valor IsEnabled en la función.