Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 31-03-2009, 21.44.26   #1
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
[PHP] Schema per transazioni con db

Mi trovo a dover eseguire sul db 3 query diverse, in particolare 3 delete su diverse tabelle, ma devo essere sicuro che vengano effettuate tutte e 3 oppure nessuna.
Mi sono trovato in passato in questa situazione usando JSP ed ho risolto impostando l'autocommit a false, messo le diverse query all'interno di un try, committate (azz che brutta parola) e poi messo una catch con rollback.
Una cosa così:
Codice:
try {
   conn.setAutocommit(false);
   query1 = "Un'operazione sul db";
   query2 = "Un'altra operazione sul db";
   query3 = "Un'ultima operazione sul db";

   query1.executeUpdate();
   query2.executeUpdate();
   query3.executeUpdate();

   conn.commit();
}
catch (SQLException ex) {
   //vari messaggi d'errore

   conn.rollback();
}
ecc, ecc...
Bene, suppongo che in PHP la cosa sia molto simile, ma non so praticamente come si fa.
Come sarebbe lo schema da seguire?
Come imposto l'autocommit a false?
Come si fa il commit di una query se l'autocommit è false?
Come si esegue il rollback?
Alhazred non è collegato   Rispondi citando
Vecchio 01-04-2009, 00.19.00   #2
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Dimenticavo una cosa importante, il db è mysql.
Alhazred non è collegato   Rispondi citando
Vecchio 01-04-2009, 12.44.28   #3
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ho risolto così
Codice:
mysql_query("SET AUTOCOMMIT=0");
mysql_query("START TRANSACTION");

$del_tab1 = mysql_query("DELETE FROM tab1 WHERE codice='".$codice."'",$db);
$del_tab2 = mysql_query("DELETE FROM tab2 WHERE codice='".$codice."'",$db);
$del_tab3 = mysql_query("DELETE FROM tab3 WHERE codice='".$codice."'",$db);

if((!$del_tab1) || (!$del_tab2) || (!$del_tab3)) {
	mysql_query("ROLLBACK");
	mysql_query("SET AUTOCOMMIT=1");
	return false;
}
else {
	mysql_query("COMMIT");
	mysql_query("SET AUTOCOMMIT=1");
	return true;
}
Alhazred non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Schema carica batterie USB STDK Chiacchiere in libertà 16 08-11-2011 18.16.04
Cerco lo schema per sdoppiare una rete lan unn4m3d Internet e Reti locali 1 10-02-2009 23.41.39
schema tv raulito73 Multimedia | audio - video 2 05-11-2007 16.45.45
Disegnare schema E/R GiulioCesare Software applicativo 3 30-03-2005 09.35.51
schema elettico monitor siemens MCM1702 g_loris Hardware e Overclock 2 17-10-2003 12.38.50

Orario GMT +2. Ora sono le: 01.25.33.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.