Usar un índice filtrado único
En SQL Server 2008 o superior, simplemente puede usar un índice filtrado único
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
ON TableName(FormID)
WHERE isDefault = 1
Dónde está la mesa
CREATE TABLE TableName(
FormID INT NOT NULL,
isDefault BIT NOT NULL
)
Por ejemplo, si intenta insertar muchas filas con el mismo FormID
y isDefault
establecido en 1 tendrá este error:
No se puede insertar una fila de clave duplicada en el objeto 'dbo.TableName' con un índice único 'IX_TableName_FormID_isDefault'. El valor de la clave duplicada es (1).
Fuente:http://technet.microsoft.com/en-us/library/cc280372.aspx