ホームページ >データベース >mysql チュートリアル >SQL Server 2005 で条件付き一意制約を実装するにはどうすればよいですか?
SQL Server 2005: 列サブセットの条件付き一意性の実装
SQL Server 2005 で特定の条件下でのみ適用される一意の制約を作成することには課題が伴います。トリガーは解決策を提供しますが、パフォーマンスに影響を与える可能性があります。 より効率的なアプローチでは、フィルターされたインデックスを利用します。
フィルターされたインデックス: 条件付き制約の動的ソリューション
フィルターされたインデックスを使用すると、特定のデータ サブセットのインデックス作成が可能になり、フィルター述語を通じて条件付き制約を実装するための強力なメカニズムが提供されます。
フィルターされたインデックスを使用した条件付き一意制約の作成
次の T-SQL ステートメントは、フィルターを使用して一意のインデックスを作成する方法を示しています。
<code class="language-sql">CREATE UNIQUE INDEX MyIndex ON MyTable (ID) WHERE RecordStatus = 1;</code>
これにより、ID
列に一意の制約が作成されますが、RecordStatus
が 1 の場合に限ります。この条件付きの一意性に違反しようとすると、エラーが生成されます。
エラーメッセージの例:
ID
が 1 のときに重複した RecordStatus
値を挿入しようとすると、次の結果が生じます:
<code>Msg 2601, Level 14, State 1, Line 13 Cannot insert duplicate key row in object 'dbo.MyTable' with unique index 'MyIndex'. The duplicate key value is (9999).</code>
概要
フィルター インデックスは、SQL Server 2005 で条件付き一意制約を確立するための効率的かつ洗練された方法を提供し、トリガー ベースのソリューションによく伴うパフォーマンスのオーバーヘッドを回避します。 フィルター述部を使用すると、特定のデータ サブセット内の一意性を動的に制御できます。
以上がSQL Server 2005 で条件付き一意制約を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。