Erro violation of PRIMARY or UNIQUE KEY constraint

Firebird

18/03/2016

Boa tarde pessoal,
Estava usando o meu aplicativo de teste normalmente que tenho e começou a aparecer essa mensagem ao gravar
violation of PRIMARY or UNIQUE KEY constraint "@1" on table "@2"

Estou meio perdido com esse @1 e @2 que aparecem
Estou usando banco firebird (2.5) e o Delphi 2010
Usuario

Usuario

Curtidas 0

Respostas

William

William

18/03/2016

Basicamente essa mensagem quer dizer que você está tentando gravar um valor repetido em um campo que é PRIMARY KEY ou UNIQUE KEY, ou seja, esses tipos não aceitam valores duplicados na tabela.
GOSTEI 0
Usuario

Usuario

18/03/2016

Até ai tudo bem...
Só queria saber o motivo de apresentar @1 e @2 no lugar dos nomes da constraint e da tabela
Pq faço várias inserções ao gravar... queria saber em qual tabela está dando o erro para ter uma noção de onde corrigir...
GOSTEI 0
William

William

18/03/2016

Esses "@" indicam parametrizações, então aconselho você a testar esses INSERTs via ferramentas IBExpert, com isso terá um feedback melhor dos erros.
GOSTEI 0
Zildo

Zildo

18/03/2016

---------------------------
Free SNGPC - Sistema Nacional de Gerenciamento de Produtos Controlados
---------------------------
SQL Error: violation of PRIMARY or UNIQUE KEY constraint "PK_MEDICO" on table "MEDICO" Problematic key value is ("CRM" = '9699'). Error Code: -803. can't format message 13:197 -- message file C:\\Windows\\firebird.msg not found The SQL: INSERT INTO MEDICO (CRM,MEDICO,CONSELHO,UF,CADASTRO) VALUES (?,?,?,?,?);
---------------------------
OK
---------------------------
Ocorre na hora qua mando gravar um medico que ja existe! Quero colocar uma mensagem no delphi e nao estou conseguindo.
GOSTEI 0
Zildo

Zildo

18/03/2016

---------------------------
Free SNGPC - Sistema Nacional de Gerenciamento de Produtos Controlados
---------------------------
SQL Error: violation of PRIMARY or UNIQUE KEY constraint "PK_MEDICO" on table "MEDICO" Problematic key value is ("CRM" = ''9699''). Error Code: -803. can''t format message 13:197 -- message file C:\\\\Windows\\\\firebird.msg not found The SQL: INSERT INTO MEDICO (CRM,MEDICO,CONSELHO,UF,CADASTRO) VALUES (?,?,?,?,?);
---------------------------
OK
---------------------------
Ocorre na hora qua mando gravar um medico que ja existe! Quero colocar uma mensagem no delphi e nao estou conseguindo.
GOSTEI 0
Arthur Heinrich

Arthur Heinrich

18/03/2016

Você tem várias opções para isso:

1 - Pode tratar o erro, usando try/catch, para que o erro não seja exibido
2 - Pode checar se o registro já existe e ignorar
3 - Pode modificar o comando para só inserir se não existe
4 - Pode modificar o comando para inserir quando não existe e modificar quando existe
GOSTEI 0
POSTAR