一意のフィルター処理されたインデックスを使用する
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に設定すると、次のエラーが発生します:
重複するキー行を、uniqueindex'IX_TableName_FormID_isDefault'を持つオブジェクト'dbo.TableName'に挿入できません。重複するキー値は(1)です。
ソース:http://technet.microsoft.com/en-us/library/cc280372.aspx