ERP – Cadastros – Ao tentar cadastrar um produto é apresentada a mensagem: Violação de Chave
Incidente
No módulo de Cadastros, ao tentar cadastrar um produto é apresentada a mensagem: Violação de Chave.
No log SQLMon coletado apresenta os seguintes dados:
INSERT INTO E000PRO
(CodDer, CodEmp, CodFil, CodPro, SeqInt)
VALUES
(:CodDer , :CodEmp , :CodFil , :CodPro , :SeqInt )
DATA IN - Param = 1, Type = varString, Precision = 0, Scale = 0, Data =
DATA IN - Param = 2, Type = varInteger, Precision = 0, Scale = 0, Data = 1
DATA IN - Param = 3, Type = varInteger, Precision = 0, Scale = 0, Data = 1
DATA IN - Param = 4, Type = varString, Precision = 0, Scale = 0, Data = 060088735
DATA IN - Param = 5, Type = varInteger, Precision = 0, Scale = 0, Data = 1122695
Error - ORA-00001: unique constraint (ERP_.CP_E000PRO) violated
TRANSACTION - Rollback
TRANSACTION - Begin Transaction
Causa
Essa mensagem ocorre porque há divergência entre a tabela LstVal.E000PRO e a tabela SeqInt.R900NXV filtrando por CODPKY = 'E000PRO'.
Solução
Para que e a mensagem não seja mais apresentada, realize os passos a seguir:
1. Gere um log SQLMon do momento para comparar se é o mesmo cenário;
Para mais informações sobre quais os passos para gerar o SQLMon, verifique o artigo: TECNOLOGIA - SQLMon - Quais são os passos para gerar o Log do SQLMon
2. Execute o comando abaixo, em uma ferramenta de banco, se confirmar que é a mesma situação;
SELECT * FROM R900NXV WHERE CODPKY = 'E000PRO'
3. Execute o comando abaixo, em uma ferramenta de banco;
SELECT MAX(SEQINT) FROM E000PRO
Importante
O valor da tabela R900NXV para no retorno do comando do passo 2, deve ter o mesmo valor ou valor maior do retorno do comando do passo 3.
4. Ajuste o valor do campo LstVal.R900NXV para o mesmo valor obtido no retorno do comando 3;
5. Siga com o processo de cadastro do produto.