Tom Lane... Tenho que falar com este cara... Pra pedir desculpas por ter levantado a hipótese de o Postgres estar com erro, hehehe.
Respondendo ao Flávio, Leandro, Danilo e Mello. Bom, então o problema deve estar na maneira como faço. Uso clarion 6.1 e acesso o postgres via odbc. Segue uma rotina simples de exclusão de uma venda: vendas{Prop:SQL}='BEGIN TRANSACTION' ...ven:numero_venda=1 ...if access:vendas.tryfetch(ven_numero) ......vendas{Prop:SQL}='ROLLBACK TRANSACTION' ......message('Não encontrei esta venda') ......exit ...end ...vendas{Prop:SQL}='DELETE FROM vendas_produtos WHERE numero_venda=1' ...if Checa_Erro(Loc:Mensagem)=true ......vendas{Prop:SQL}='ROLLBACK TRANSACTION' ......message(Loc:Mensagem) ......exit ...end ...vendas{Prop:SQL}='DELETE FROM vendas_parcelas WHERE numero_venda=1' ...if Checa_Erro(Loc:Mensagem)=true ......vendas{Prop:SQL}='ROLLBACK TRANSACTION' ......message(Loc:Mensagem) ......exit ...end ...if relate:vendas.delete(0) ......vendas{Prop:SQL}='ROLLBACK TRANSACTION' ......message('Não consegui excluir a venda') ......exit ...end vendas{Prop:SQL}='COMMIT TRANSACTION' Checa_Erro(*cstring),byte ! função checa_erro if fileerrorcode()>0 ...Par:Mensagem=clip(left(fileerror())) ...if Par:Mensagem='' and errorcode()>0 ......Par:Mensagem=clip(left(error())) ...end ...return true end if errorcode()>0 ...Par:Mensagem=clip(left(error())) ...return true end return false Realmente eu envio vários scripts dentro da transação, mas mesmo assim, se eu substituir o COMMIT do final pelo ROLLBACK, ou colocar o ROLLBACK em algum ponto da rotina, o postgres cancela toda a transação. Agora vamos imaginar que exista relacionado à tabela vendas a tabela vendas_observacoes e eu tenha esquecido de excluir, vai dar erro de relacionamento. Neste caso, a função delete(0) do clarion mostra uma mensagem de erro, a aplicação mostra a mensagem 'Não consegui excluir a venda', o que me faz concluir que o ROLLBACK foi enviado, porém, nesta situação, a transação não é cancelada, os produtos e as parcelas ficam excluídas, e a venda incompleta. Pode ser um problema do clarion, ou a maneira como estou programando. Alguma idéia do que pode ser? Muito obrigado. Ronei Se você achar um bug como esses, numa funcionalidade básica do banco de dados, justamente no PostgreSQL, tenho certeza que o Tom Lane te manda alguns dólares de prêmio lá dos EUA direto na sua conta bancária. []s Flavio Gurgel _______________________________________________ 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