データベース レコードに固有のデフォルト フラグを適用する
データベース管理では、多くの場合、特定のデータセット内の 1 つのレコードのみがフラグを設定できるようにする必要があります。デフォルトとしてマークされます。たとえば、システムには、請求目的のデフォルトとして 1 人の顧客だけが指定されている顧客レコードのコレクションが存在する場合があります。この要件に対処するために、データベース制約を実装できます。
一意のフィルター インデックスの使用
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 に設定できるのは 1 つのレコードだけであることが保証されます。同じ FormID を持つ複数のレコードがこのフラグを設定しようとすると、エラーが発生します。例:
一意のインデックス 'IX_TableName_FormID_isDefault' を持つオブジェクト 'dbo.TableName' に重複キー行を挿入できません。重複キーの値は (1) です。
一意のフィルター処理されたインデックスを利用すると、指定された条件 (この場合は FormID) ごとに 1 つのレコードのみをデフォルトとして指定できるように制約を効果的に実装できます。
以上がデータベースレコードに固有のデフォルトフラグを適用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。