Usuário com melhor resposta
Criacao de chave composta

Pergunta
-
Amigos,
estou tentando inserir um registro mais o erro retornado é violacao de chave mais especificamente KEY DUPLICATE.
Porém o registro que estou querendo inserir possui dois campos iguais e um terceiro diferente.
Poque nao estou conseguindo inserir visto que a minha chave é composta dos campos A,B e C?
A B C
5798116 18680739634 3187981203 Plano Oi Conta Total 200 0
5798116 18680739634 3186831203 Plano Oi Conta Total 200 0
Respostas
-
Olá Daniel,
Se você realmente tiver certeza de que a chave não está duplicada, isso pode ser dar por conta de uma constraint ou de um índice. Rode as procedures abaixo
sp_helpindex 'Sua Tabela'
sp_helpconstraint 'Sua Tabela'
Verifique se existe algum índice e (ou) constraint referenciando as colunas A e B
Posteriormente faça uma consulta para se certificar de que não existam registros duplicados
Code SnippetSELECT * FROM TABELA
INNER JOIN
(SELECT A,B, COUNT(*) AS TOTAL
FROM TABELA
GROUP BY A, B
HAVING COUNT(*) > 1) AS SUBQ
ON TABELA.A = SUBQ.A AND TABELA.B = SUBQ.B
[ ]s,
Gustavo
Todas as Respostas
-
Olá Daniel,
Se você realmente tiver certeza de que a chave não está duplicada, isso pode ser dar por conta de uma constraint ou de um índice. Rode as procedures abaixo
sp_helpindex 'Sua Tabela'
sp_helpconstraint 'Sua Tabela'
Verifique se existe algum índice e (ou) constraint referenciando as colunas A e B
Posteriormente faça uma consulta para se certificar de que não existam registros duplicados
Code SnippetSELECT * FROM TABELA
INNER JOIN
(SELECT A,B, COUNT(*) AS TOTAL
FROM TABELA
GROUP BY A, B
HAVING COUNT(*) > 1) AS SUBQ
ON TABELA.A = SUBQ.A AND TABELA.B = SUBQ.B
[ ]s,
Gustavo
-
Sim existe uma chave e indice para a tabela que estou querendo inserir, mais eu coloquei como composta vide exemplo:
Code SnippetUSE
[BDCOBESTR]GO
/****** Object: Index [PK_D_Pontual_Paggo] Script Date: 04/29/2008 16:31:36 ******/
ALTER
TABLE [dbo].[D_Pontual_Paggo] ADD CONSTRAINT [PK_D_Pontual_Paggo] PRIMARY KEY CLUSTERED(
[Fat_ARBOR]
ASC,[CPF_CNPJ_A]
ASC,[MSISDN]
ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -
Oi Daniel,
Com a sua chave primária eu tenho certeza de que não existe problema. Estou preocupado com as outras restrições que podem estar presentes (por isso a verificação das procedures e da query)... Façamos diferente então. Poste a mensagem de erro quando você tenta inserir o registro
[ ]s,
Gustavo
-
Segue o erro
'D_Pontual_Paggo' table
- Unable to create index 'PK_D_Pontual_Paggo'.
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.D_Pontual_Paggo' and the index name 'PK_D_Pontual_Paggo'. The duplicate key value is (5548065, 2847347720, 2188010547).
Could not create constraint. See previous errors.
The statement has been terminated. -
-
-
-
Gustavo,
não sei o que aconteceu agora funcionou normalmente.
Acredito que pode ter dado problema, pois na primeira vez eu realizei o insert em 2 etapas e na segunda eu joguei todos os registros em uma unica tabela e retirei a Duplicidade de uma unica vez e realizei o insert posteriormente.
Desde já agradeço pela ajuda
-