Usuário com melhor resposta
Por que o With NoCheck não funciona?

Pergunta
-
Pessoal estou aplicando uma chave primaria em uma tabela na qual eu propositalmente inseri um valor duplicado. O comando que eu utilizo é:
Alter Table Venda With NoCheck Add Constraint pk_Teste_Codigo Primary Key Clustered (Codigo)
O Retorno é:
Msg 1505, Level 16, State 1, Line 1
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.Venda' and the index name 'pk_Teste_Codigo'. The duplicate key value is (1).
Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.O que está faltando? Eu coloquei NOCHECK!!!
Respostas
-
Boa Tarde,
O NOCHECK só é válido para Check Constraints e Foreign Keys. Não é possível utilizá-lo para chaves primárias e unique constraints. Se a chave primária fosse duplicada na tabela pai, o que esperar de um registro na tabela filho que referenciasse a chave primária duplicada ? Sem dúvida um inconsistência impossível de ser tratada e justamente por isso não é permitida.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar segunda-feira, 19 de abril de 2010 18:51
- Marcado como Resposta Thiago, Moura terça-feira, 20 de abril de 2010 00:32
Todas as Respostas
-
Boa Tarde,
O NOCHECK só é válido para Check Constraints e Foreign Keys. Não é possível utilizá-lo para chaves primárias e unique constraints. Se a chave primária fosse duplicada na tabela pai, o que esperar de um registro na tabela filho que referenciasse a chave primária duplicada ? Sem dúvida um inconsistência impossível de ser tratada e justamente por isso não é permitida.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar segunda-feira, 19 de abril de 2010 18:51
- Marcado como Resposta Thiago, Moura terça-feira, 20 de abril de 2010 00:32
-
-
Olá Thiago,
Sim eu concordo. Seria mais prudente dar uma advertência.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Classifique as respostas. O seu feedback é imprescindível