Exemplo de Criação de Indice filtrado no Sql Server 2008

Standard
--CRIANDO TABELA PARA TESTAR O INDICE FILTRADO
CREATE TABLE TXY(ID INT IDENTITY(1,1) PRIMARY KEY, NOME VARCHAR(10), CPF VARCHAR(11))
GO
--CRIANDO O INDICE UNIQUE FILTRADO
CREATE UNIQUE NONCLUSTERED INDEX IDX_TXY_CPF 
	ON TXY(CPF) 
		WHERE CPF IS NOT NULL
GO
----------------------------------------------------------------------
--INSERINDO DADOS DE NOME E CPF
INSERT INTO TXY VALUES('JOAO','11111111111'),('MARIA','22222222222')
--RESULT SET: (2 row(s) affected)
----------------------------------------------------------------------
--INSERINDO DADOS DE NOME, PORÉM COM CPF NULL
INSERT INTO TXY VALUES('JOSE',NULL),('MARIANA',NULL)
--RESULT SET: (2 row(s) affected)
----------------------------------------------------------------------
--INSERINDO DADOS DE NOME E CPF FORÇANDO A DUPLICAÇÃO DOS DOIS PRIMEIROS REGISTROS INSERIDOS
--PARA TESTAR O ÍNDICE UNIQUE FILTRADO.
INSERT INTO TXY VALUES('JOAO','11111111111'),('MARIA','22222222222')
--RESULT SET: 
/*
Msg 2601, Level 14, State 1, Line 1
Cannot insert duplicate key row in object 'dbo.TXY' with unique index 'IDX_TXY_CPF'. The duplicate key value is (11111111111).
The statement has been terminated.
*/
----------------------------------------------------------------------
--DUPLICANDO OS REGISTROS COM CPF NULL
INSERT INTO TXY VALUES('JOSE',NULL),('MARIANA',NULL)
--RESULT SET: (2 row(s) affected)
----------------------------------------------------------------------
--VERIFICANDO OS REGISTROS NA TABELA
SELECT * FROM TXY

Link do Books OnLine sobre o Índice Filtrado: 

 msdn.microsoft.com/pt-br/library/cc280372.aspx

Deixar uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *