Użyj unikalnego filtrowanego indeksu
W SQL Server 2008 lub nowszym możesz po prostu użyć unikalnego filtrowanego indeksu
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
ON TableName(FormID)
WHERE isDefault = 1
Gdzie jest stół
CREATE TABLE TableName(
FormID INT NOT NULL,
isDefault BIT NOT NULL
)
Na przykład, jeśli próbujesz wstawić wiele wierszy z tym samym FormID
i isDefault
ustaw na 1, pojawi się ten błąd:
Nie można wstawić zduplikowanego wiersza klucza w obiekcie „dbo.TableName” z unikalnym indeksem „IX_TableName_FormID_isDefault”. Zduplikowana wartość klucza to (1).
Źródło:http://technet.microsoft.com/en-us/library/cc280372.aspx