Senhores(as), Tenho a seguinte situação (a grosso modo):
BEGIN TRANSACTION; INSERT INTO vendas (...); if errorfile() then ROLLBACK TRANSACTION; exit.(Isso na minha aplicação) INSERT INTO vendas_produtos (...); if errorfile() then ROLLBACK TRANSACTION; exit. INSERT INTO vendas_produtos (...); if errorfile() then ROLLBACK TRANSACTION; exit. INSERT INTO vendas_produtos (...); if errorfile() then ROLLBACK TRANSACTION; exit. INSERT INTO vendas_parcelas (...); if errorfile() then ROLLBACK TRANSACTION; exit. INSERT INTO vendas_parcelas (...); if errorfile() then ROLLBACK TRANSACTION; exit. COMMIT TRANSACTION; Funciona blz. Se eu trocar o COMMIT pelo ROLLBACK, toda a transação é cancelada. Blz. Mas se acontecer um erro a nível de postgres, tipo, inserindo o registro em vendas_parcelas com um campo inexistente na tabela, o postgres retorna um erro, mas mesmo eu enviando um ROLLBACK, o que já foi gravado fica gravado, a venda fica incompleta. Ou seja, quando há algum erro de dados que eu detecto na minha aplicação, envio um ROLLBACK e toda a operação é cancelada, mas quando ocorre um erro de sintaxe ou outro equivalente, o ROLLBACK não cancela o que já foi gravado. Isto tem causado alguns transtornos para mim e para meus clientes. Porque isso acontece? Há uma solução pra isso? Muito obrigado Ronei RH Sistemas Postgres 8.3 Clarino 6.1 Windows XP
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral