Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fernando Wobeto

Comite apenas no final

Recommended Posts

Boa tarde galera,

 

imaginem que tenho um script que mexe em umas 8 tabelas de um banco de dados, onde a pessoa ao inserir um registro, ele faz um while adicionando valores a uma tabela, apos isso faz uma alteração em um campo de uma outra tabela, após isso faz um DELETE em outros registros de outra tabela e assim por diante.

 

Mas imaginem que no meio deste processo falte luz, trave o computador, etc etc.... Ou seja, o processo do script nao foi completado.

 

tem alguma forma de ele efetuar todo o processo e no final, apenas no final quando tudo foi executado perfeitamente ele dê o "COMITE"????

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim Arndt, resolvi aparentemente isso utilizando no php pg_query(&conexao, "begin") e pg_query(&conexao, "commit").

 

Porem identifiquei que a sequence do campo autoincrement é alterada para a qtde de registros que deveria ser inserida mesmo com o rollback.

 

Há algo para solucionar isso?

 

Fernando

 

Boa Tarde,

 

O que você precisa usar se chama transaction.

 

Dê uma olhadinha nessa parte do manul do postgre: http://www.postgresql.org/docs/8.4/interactive/transaction-iso.html

 

pois eh,

vi uma solução para isso, mas.....

 

seria tirar os campos SERIAL (auto-increment) das tabelas e via codigo PHP no pg_query, atribuir o nextVal('seq_table1') para eles.

 

Vou testar

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.