ホームページ > データベース > mysql チュートリアル > SQL Server で 1 つのレコードのみに 'isDefault' フラグが 1 に設定されていることを確認する方法

SQL Server で 1 つのレコードのみに 'isDefault' フラグが 1 に設定されていることを確認する方法

Linda Hamilton
リリース: 2025-01-01 12:38:11
オリジナル
376 人が閲覧しました

How to Ensure Only One Record Has an 'isDefault' Flag Set to 1 in SQL Server?

「isDefault」フラグを持つレコードが 1 つだけであることを保証する

データベース テーブルでは、1 つのテーブルにつき 1 つのレコードのみが含まれるようにデータを制限したい場合があります。定義されたグループは、特定の「isDefault」フラグを 1 に設定できます。これは、制約がテーブル全体ではなくサブセットに適用されるため、課題が生じます。

ソリューション: 一意のフィルターされたインデックスの利用

最新の SQL Server バージョン (2008 以降) は、一意のフィルターされたインデックスを使用するソリューションを提供します。このようなインデックスを作成すると、指定した行セットに対して "isDefault" フィールドに制約を適用できます。

インデックス作成構文

次のように定義されたテーブルの場合以下:

CREATE TABLE TableName(
    FormID INT NOT NULL,
    isDefault BIT NOT NULL
)
ログイン後にコピー

次を使用して、一意のフィルタリングされたインデックスを作成できます。構文:

CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
    ON TableName(FormID)
    WHERE isDefault = 1
ログイン後にコピー

このインデックスは、同じ FormID と "isDefault" が 1 に設定された複数のレコードを挿入しようとするときに、重複キー違反を防ぎます。 例:

INSERT INTO TableName(FormID, isDefault) VALUES (1, 1)
INSERT INTO TableName(FormID, isDefault) VALUES (1, 1) -- Will result in a unique key violation error
ログイン後にコピー

このインデックスを使用すると、各 FormID セット内の 1 つのレコードだけが 1 に設定された「isDefault」フラグを所有できるようになり、目的のデータが維持されることが効果的に保証されます。誠実さ。

以上がSQL Server で 1 つのレコードのみに 'isDefault' フラグが 1 に設定されていることを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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