ホームページ >データベース >mysql チュートリアル >SQL Server で一意の識別子ごとにデフォルト レコードが 1 つだけ存在するようにする方法

SQL Server で一意の識別子ごとにデフォルト レコードが 1 つだけ存在するようにする方法

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 07:55:35275ブラウズ

How to Ensure Only One Default Record Exists per Unique Identifier in SQL Server?

単一のデフォルト レコードの維持: 制約の強制

データベース管理システムでは、データの整合性と一貫性を確保することが重要です。このようなシナリオの 1 つは、「デフォルト」としてマークされたレコードの数を、一意の識別子で識別される行のセットごとに 1 つのみに制限する必要があります。これはどのように実現できますか?

一意のフィルター インデックス ソリューション

SQL Server バージョン 2008 以降では、一意のフィルター インデックスが洗練されたソリューションを提供します。以下に示すように、一意のフィルタリングされたインデックスを作成することにより、

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

...特定の FormID に対して、「isDefault」ビット フラグが 1 に設定されたレコードが 1 つだけ存在できるようにします。

基礎となるテーブル構造は次のように表されます:

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

制約

この制約は、同じ FormID と "isDefault" が 1 に設定された複数のレコードを挿入しようとすると、一意のインデックスに重複キー値が存在することを理由にエラーをトリガーすることを強制します。たとえば、一致する FormID と "isDefault" フラグを 1 に設定して複数の行を挿入すると、次のエラー メッセージが生成されます:

一意のインデックス 'IX_TableName_FormID_isDefault を持つオブジェクト 'dbo.TableName' に重複したキー行を挿入できません'。重複キーの値は (1) です。

この手法を採用することで、データベース管理者はデータの整合性を効果的に維持し、特定の行セットのデフォルト レコードとして 1 つのレコードのみが指定されるようにすることができます。

以上がSQL Server で一意の識別子ごとにデフォルト レコードが 1 つだけ存在するようにする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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