この方法で更新時にチェックを強制できます。
このようなテーブルがあるとしましょう
create table UserTest(Id int, IsEnabled bit, [GroupId] int)
ここで、[GroupId]
によって 1 人のユーザーのみが有効になっていることを確認します。 .
通常、制約は次のようになります
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId)=1)
この制約は、GroupId
を更新するまで、更新されたレコードに対してトリガーされません .
したがって、次のようにして、強制的に IsEnabled 列を検証する必要があります
ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)
関数に IsEnabled 値を使用するかどうかは関係ありません。