ホームページ > データベース > mysql チュートリアル > SQL Server 2005 で条件付き一意制約を実装するにはどうすればよいですか?

SQL Server 2005 で条件付き一意制約を実装するにはどうすればよいですか?

DDD
リリース: 2025-01-10 08:01:42
オリジナル
970 人が閲覧しました

How Can I Implement Conditional Unique Constraints in 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート