ホームページ >データベース >mysql チュートリアル >SQL Server で一意の識別子ごとにデフォルト レコードが 1 つだけ存在するようにする方法
単一のデフォルト レコードの維持: 制約の強制
データベース管理システムでは、データの整合性と一貫性を確保することが重要です。このようなシナリオの 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 サイトの他の関連記事を参照してください。