Prazer em desenvolver software
Boa noite srs.
Criei uma procedure que faz um insert select em uma tabela e está dando erro de primary key duplicada:
Msg 2627, Level 14, State 1, Line 7
Violation of PRIMARY KEY constraint 'PK_NFiscalItem_xx12'. Cannot insert duplicate key in object 'dbo.NFISCALITEMteste'.
The statement has been terminated.
O problema é que a consulta funciona, e não está atingindo a chave por completo,
Abaixo está a estrutura da tabela e a a procedure... por favor me deem um help ai...
Tabela:
CREATE TABLE [dbo].[NFiscalItemTeste](
[Empresa] [varchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Filial] [varchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Cgcemissor] [varchar](14) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Serie] [varchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[NumNF] [float] NOT NULL,
[NItem] [int] NOT NULL,
[CodProduto_ID] [int] NOT NULL,
CONSTRAINT [PK_NFiscalItem_xx12] PRIMARY KEY CLUSTERED
(
[Empresa] ASC,
[Filial] ASC,
[Cgcemissor] ASC,
[Serie] ASC,
[NumNF] ASC,
[NItem] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
Procedure:
declare @SERIE AS CHAR(2)
dECLARE @NUMERO AS INTEGER
set @serie = 'N2'
set @numero = '454719'
INSERT INTO NFISCALITEMteste
SELECT DNI.EmpresaOR, DNI.FilialOr, Fl.CGC, @SERIE AS Series, @NUMERO AS NumNF,
rank() OVER (ORDER BY dni.codproduto_id) as NItem, DNI.CodProduto_ID
FROM INT_DevNotaItem DNI
INNER JOIN FILIAIS FL ON FL.FILIAL = DNI.FILIALOR
INNER JOIN CLIENTES CL ON CL.CGC = DNI.CGCEMISSOROR
INNER JOIN INT_DevNota DN ON DN.NRDEV = DNI.NRDEV AND convert(varchar, DN.DTDEV, 103) = convert(varchar, DNI.DTDEV, 103)
AND DN.EMPRESAOR = DNI.EMPRESAOR AND DN.FILIALOR = DNI.FILIALOR
INNER JOIN ORCAMENTOITEM OI ON OI.CODORCAMENTO_ID = DN.CODORCAMENTO_ID AND OI.CODPRODUTO_ID = DNI.CODPRODUTO_ID AND
OI.CODFABRICANTE_ID = DNI.CODFABRICANTE_ID
WHERE DNI.EMPRESAOR = '01' AND DNI.FILIALOR = '02' AND DNI.CGCEMISSOROR = '61155529000179' AND
DN.CODORCAMENTO_ID = 1223958
Tags:
As respostas para este tópico estão encerradas.
Permalink Responder até Léo Biscassi em 31 janeiro 2014 at 19:32
Sem o retorno do SELECT fica difícil ajudar, rs.
Permalink Responder até Ricardo Henrique de Carvalho em 3 fevereiro 2014 at 9:15
Como assim Léo???
Léo Biscassi disse:
Sem o retorno do SELECT fica difícil ajudar, rs.
Permalink Responder até Ernani Lima em 3 fevereiro 2014 at 16:24
deve estar dando um produto cartesiano e trazendo o mesmo código ou a modelagem está com uma falha na parte de chaves, verifica se não esta vindo o mesmo código.
Permalink Responder até Ricardo Henrique de Carvalho em 3 fevereiro 2014 at 16:34
Pessoal, boa tarde.
Encontrei o que estava dando de errado.
Na minha consulta eu busco o código do produto em várias notas, onde o mesmo código aparece várias vezes. No meu teste apareceu um código repetido duas vezes e como eu utilizo o rank() para gerar o código do item, aconteceu quando repetiu o produto, gerou o mesmo item duas vezes item "5 , 5" ao invés de criar o item "5, 6".
Correção: utilizei o 'ROW_NUMBER ( )' ao invés do 'Rank()'.
Obrigado a todos... Vlw Ermani...
© 2016 Criado por Ramon Durães.
Ativado por