Como remover transações que nao foi dado o commit ou rollback?

Boa tarde, vamos supor que o usuario estava cadastrando a nota fiscal de código 20 e o sistema deu um “execute” no statement porem antes de dar o commit, faltou luz e o pc desligou…
Agora quando eu tento cadastrar uma nota fiscal de codigo 20 da erro dizendo que a chave esta duplicada, porem nao existe esse registro na tabela, e mesmo tentando dar um delete no registro de codigo 20 continua dando esse problema.
Alguma luz?

Está utilizando qual framework ORM e como está o mapeamento para a PK das entidades?

Na verdade é um pequeno sistema que usa JDBC puro…
e o banco é firebird

Eu apostaria que o problema é no firebird, mas, enfim…
Como é o controle da chave? Sequence, auto increment, identity, você tem uma coluna que faz isso?

É uma chave personalizada, varchar, logo nao tem controle sobre incremento.

Está mais com cara de ser problema do próprio BDD mesmo… pois se o select para a chave ‘20’ não retorna nada, não tem como ele acusar estar duplicado certo?? Mas não sei como funciona o banco por trás, se existe alguam tabela de temporário…

O banco está corrompido; você precisa achar alguma ferramenta do banco de dados que consiga limpar a corrupção do banco.

http://www.firebirdfaq.org/faq324/
http://sourceforge.net/projects/ibdbrepair/

O banco está corrompido; você precisa achar alguma ferramenta do banco de dados que consiga limpar a corrupção do banco.

http://www.firebirdfaq.org/faq324/
http://sourceforge.net/projects/ibdbrepair/


[/quote]

[quote=drsmachado]
Eu apostaria que o problema é no firebird, mas, enfim… [/quote]