ホームページ >データベース >mysql チュートリアル >SQL Server テーブルの FormID ごとに isDefault = 1 を持つレコードが 1 つだけであることを確認する方法

SQL Server テーブルの FormID ごとに isDefault = 1 を持つレコードが 1 つだけであることを確認する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-04 01:26:10301ブラウズ

How to Ensure Only One Record Has isDefault = 1 per FormID in a SQL Server Table?

データベース テーブルに単一のデフォルト レコードを確保する

問題

データベース テーブルを 1 つのレコードのみが所有できるように制限する制約を実装するにはどうすればよいですか特定の「isDefault」フィールド値が 1 ですか?この制約は、「FormID」フィールドで識別されるレコードのサブセットに適用されます。

解決策: SQL Server 2008 以降の一意のフィルター処理されたインデックス

SQL Server 2008 以降では、一意のフィルター処理されたインデックスを使用するソリューションが提供されます。インデックス:

CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
ON TableName(FormID)
WHERE isDefault = 1

次の表を考えてみましょう。構造:

CREATE TABLE TableName(
    FormID INT NOT NULL,
    isDefault BIT NOT NULL
)

同じ "FormID" および "isDefault" を 1 として複数のレコードを挿入すると、次のエラーが発生します:

Cannot insert duplicate key row in object 'dbo.TableName' with unique
index 'IX_TableName_FormID_isDefault'. The duplicate key value is (1).

このエラーは制約を効果的に強制し、 「isDefault」を 1 に設定できるのは、「FormID」ごとに 1 つのレコードのみです。

(出典: https://technet.microsoft.com/en-us/library/cc280372.aspx)

以上がSQL Server テーブルの FormID ごとに isDefault = 1 を持つレコードが 1 つだけであることを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。