Use um índice filtrado exclusivo
No SQL Server 2008 ou superior, você pode simplesmente usar um índice filtrado exclusivo
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
ON TableName(FormID)
WHERE isDefault = 1
Onde está a mesa
CREATE TABLE TableName(
FormID INT NOT NULL,
isDefault BIT NOT NULL
)
Por exemplo, se você tentar inserir muitas linhas com o mesmo
FormID
e isDefault
definido como 1, você terá este erro:
Não é possível inserir uma linha de chave duplicada no objeto 'dbo.TableName' com uniqueindex 'IX_TableName_FormID_isDefault'. O valor da chave duplicada é (1).
Fonte:http://technet.microsoft.com/en-us/library/cc280372.aspx