重複の可能性:
単純な CHECK 制約はそれほど単純ではありません
ユーザーのロールを持つテーブルがあります。次のようになります。
Id, RoleId, PersonId, Active
アクティブな列はソフト削除機能に使用されます。ユーザーのロールを削除すると、実際には に設定さactive
れfalse
ます。したがって、同じ組み合わせで複数の行を持つことができますがroleid-personid-active
、アクティブ ビットが false に設定されている場合のみです。したがって、これは有効なデータです。
Id RoleId PersonId Active
1 1 1 false
2 1 1 false
3 1 1 false
4 1 1 false
ただし、これはそうではありません。アクティブなロールは常に 1 つしか持てないためです (したがって、レコード 3 を挿入しないでください)。
Id RoleId PersonId Active
1 1 1 false
2 1 1 true
3 1 1 true
私の質問は次のとおりです。RoleId, PersonId and Active
にactive
等しい一意の制約を作成できますtrue
か?
ps。SQL サーバーのバージョンは 2005 です