Utilizza un indice filtrato univoco
In SQL Server 2008 o versioni successive puoi semplicemente utilizzare un indice filtrato univoco
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
ON TableName(FormID)
WHERE isDefault = 1
Dov'è il tavolo
CREATE TABLE TableName(
FormID INT NOT NULL,
isDefault BIT NOT NULL
)
Ad esempio, se provi a inserire più righe con lo stesso FormID
e isDefault
impostato su 1 avrai questo errore:
Impossibile inserire una riga di chiave duplicata nell'oggetto 'dbo.TableName' con uniqueindex 'IX_TableName_FormID_isDefault'. Il valore della chiave duplicata è (1).
Fonte:http://technet.microsoft.com/en-us/library/cc280372.aspx