Transazioni

Ho letto qualche articolo sulle transazioni in mysql , ho dei piccoli dubbi:

come di gestiscono le transazioni ? ( mi servirebbe qualche esempio per capire come scrivere le query e magari il codice PHP )

come dico a mysql se fare ROLLBACK o COMMIT?

come al solito :D le mie domande da niubbo

  :'(

:bye:

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

La parte di PHP non cambia, devi semplicemente eseguire altre query, una per avviare la transazione ed un'altra per concluderla con successo (conservando le modifiche sino a quel momento apportate) o con un fallimento (tornando alla situazione iniziale)

1) per avviare una transazione:

mysql_query("START TRANSACTION");

oppure:

mysql_query("BEGIN");

2)per concluderla con successo:

mysql_query("COMMIT");

3)per concluderla con fallimento:

mysql_query("ROLLBACK");

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

aah quindi con semplici IF (condizione : OK ){ mysql_query('COMMIT'); }

posso farlo :D credevo andasse tutto in una queri :2funny:

grazie Gianni

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

sto provando ad utilizzarle per mettere degli annunci in un database ... non so se sia corretto ma :

BEGIN

insert ....

if ( qualcosa ) [il problema è che non so cosa :2funny: devo controllare ( del mio script ) per fermare la transazione  ;D]

     COMMIT

else

ROLLBACK

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Gianni ho un grosso problema con le transazioni :

creo le condizioni necessarie affinche ci sia il commit

id = 1

faccio 2/3 query per portare l'id a 5

ora setto una variabile in modo che venga querato il ROLLBACK

faccio 5 query

torno al query browser

inserisco un record ( o con una query da php )

e l'id è 10 :( come mai calcola i rollback aumentando l'id della query per ogniuno di essi?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

La gestione degli ID autoincrement in una tabella InnoDB è un po' diversa da ciò che accade nelle MyISAM. Questo accade proprio per gestire correttamente le transazioni. Trovi tutti i dettagli qui:

http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-column.html

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda