Använd ett unikt filtrerat index
På SQL Server 2008 eller senare kan du helt enkelt använda ett unik filtrerat index
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
ON TableName(FormID)
WHERE isDefault = 1
Där bordet är
CREATE TABLE TableName(
FormID INT NOT NULL,
isDefault BIT NOT NULL
)
Till exempel om du försöker infoga många rader med samma FormID
och isDefault
inställd på 1 får du det här felet:
Det går inte att infoga duplicerad nyckelrad i objektet 'dbo.TableName' med unikt index 'IX_TableName_FormID_isDefault'. Dupliceringsnyckelns värde är (1).
Källa:http://technet.microsoft.com/en-us/library/cc280372.aspx