CREATE UNIQUE NONCLUSTERED INDEX [IX_X] ON [dbo].[X] ([XName] ASC,[XUsersID] ASC,[IsFilter] ASC)
CREATE TABLE dbo.Foo( FooId INTEGER NOT NULL, FooName VARCHAR(255) NOT NULL, FooInd CHAR(1) NOT NULL, CONSTRAINT Foo_P PRIMARY KEY (FooId) , CONSTRAINT Foo_C_FooInd CHECK (FooInd IN ('Y','N' ) ))goCREATE VIEW FOO_FooNameUnique WITH SCHEMABINDING AS SELECT Foo.FooNameFROM dbo.FooWHERE Foo.FooInd = 'Y'WITH CHECK OPTION goCREATE UNIQUE CLUSTERED INDEX FOO_FooNameUnique_X ON dbo.FOO_FooNameUnique (FooName)go
delete from dbo.FooINSERT INTO dbo.Foo (FooId, FooName, FooInd)SELECT 1 , 'OK' , 'Y' union allSELECT 2 , 'Duplicate' , 'Y' -- Not a duplicate due to filterINSERT INTO dbo.Foo (FooId, FooName, FooInd)SELECT 3 , 'Duplicate' , 'N'-- Not a duplicate due to filterINSERT INTO dbo.Foo (FooId, FooName, FooInd)http://www.sqlservercentral.com/Forums/Skins/Classic/Images/RichTextBoxTable/tbl_bottomleft.gifSELECT 4 , 'Duplicate' , 'N'-- This is a duplicate and should cause an errorINSERT INTO dbo.Foo (FooId, FooName, FooInd)SELECT 5 , 'Duplicate' , 'Y'