Utiliser un index filtré unique
Sur SQL Server 2008 ou supérieur, vous pouvez simplement utiliser un index filtré unique
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
ON TableName(FormID)
WHERE isDefault = 1
Où se trouve la table
CREATE TABLE TableName(
FormID INT NOT NULL,
isDefault BIT NOT NULL
)
Par exemple, si vous essayez d'insérer plusieurs lignes avec le même FormID
et isDefault
défini sur 1, vous aurez cette erreur :
Impossible d'insérer une ligne de clé en double dans l'objet 'dbo.TableName' avec l'index unique 'IX_TableName_FormID_isDefault'. La valeur de la clé en double est (1).
Source :http://technet.microsoft.com/en-us/library/cc280372.aspx