Ir para conteúdo

POWERED BY:

Arquivado

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

Roberto_S_Luz

[Resolvido] Controle de Transação

Recommended Posts

Salve, salve galera!!!

 

Galera...estou para começar a fazer um controle de transação aki e to meio perdido de como proceder com isso.

Mas...vejam bem...estou com uma ideia de...por exemplo....tenho que realizar um cadastro de funcionarios onde terão que ser gravado dados em 4 tabelas diferentes, então...antes de começar a gravar na primeira tabela, eu já verifico "antes" todos os dados a serem inseridos (CPF, Email, RG iguais, dentre outros). Daí só irá gravar se tudo estiver ok. Sendo assim...não será preciso dar "ROLLBACK's" caso der erro em alguma das tabelas.

 

Bom...essa é uma ideia, o que acham?

 

Bom abraços....e agradeço desde já!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você não der o COMMIT, as operações não são gravadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é...então de acordo com a ideia que eu coloquei aí, eu posso fazer essa verificação toda aí antes e após tudo certinho, mando gravar e dou um COMMIT no final né?

 

Detalhe: eu to mandando gravar aki sim controle de transação ainda (sem COMMIT's e ROLLBACK's) e os dados estão gravando normalmente, será que tem algo errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mysql_query('BEGIN;'); // não se esqueça do ';' em todas as instruções SQL, 

// como INSERT, SELECT, etc. É o ';' que diz que o comando terminou.

 

// INSERTS

 

if( deu tudo certo )

{

mysql_query('COMMIT;');

}

else

{

mysql_query('ROLLBACK;');

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal...ainda não tinha visto essa forma...

 

Mando sempre a SQL = "INSERT ..."; (sem ; no final)

 

e mando inserir...

$inserir = $conexao->inserir(SQL); /*e deixo o troço rolar...*/

 

Mas tambem ainda não tinha visto esse mysql_query('BEGIN;');, ele é obrigatório em todas as SQL's?

vou corrigir isso agora...

Compartilhar este post


Link para o post
Compartilhar em outros sites

É ele quem inicia a transação. Sem ele o controle de transações não funciona, pois não é iniciado. Pode-se também utilizar START TRANSACTION

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço pela ajuda Márcio, achei que esse controle fosse um bicho de 7 cabeças mais...vejo que não é lá essas coisas de alarmante.

 

Obrigado pela ajuda...qualquer duvida...voltarei ào forum.

 

Um abraço!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.