Você poderia colocar uma validação dos dados a ser inseridos na sua
aplicação, pelo menos você teria mais garantia sobre os dados que serão
gravados no banco, evitando assim insert de dados incompletos ou fora do
padrão.

Danilo

Em 1 de fevereiro de 2012 10:25, Ronei Heck <ro...@rhsistemas.com.br>escreveu:

> **
> 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
>
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a