Corsi on-line

PHP: eseguire query multiple con PDO e le Transaction

Le Transaction sono uno strumento grazie al quale interagire con una base di dati e permettere l’esecuzione simultanea di più istruzioni SQL, o query, da lanciare al Database Manager; uno dei vantaggi inerenti a tali procedure risiede sicuramente nel fatto che, per quante possano essere le operazioni previste nel corso di una transazione, queste verranno trattate come se fossero una sola.

database_design

A livello sintattico una Transaction viene delimitata inizialmente dalla clausola COMMIT, mentre la keyword ROLLBACK riporterà il flusso di esecuzione allo stato precedente la transazione annullandola.

Grazie all’estensione PDO di PHP sarà possibile effettuare transazioni con diverse tipologie di DBMS, questo per via del fatto che la libreria agisce sulla base di un livello di astrazione indipendente dall’engine relazionale utilizzato per l’archiviazione; nel caso specifico del codice proposto di seguito verrà mostrato l’utilizzo di una Transaction al fine di eseguire due istruzioni di cancellazione a carico di altrettante tabelle:

try{
	// metodi per la gestione delle eventuali eccezioni
	$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	
	// inizilizzazione della Transaction
	$PDO->beginTransaction();
	
	// query da eseguire simultaneamente
	$PDO->exec("DELETE FROM users WHERE id_usr=5");
	$PDO->exec("DELETE FROM team WHERE id_user=8"); 
	
	// esecuzione delle query
	$PDO->commit();
	}
catch(PDOException $e){	
	// annullamento in caso di eccezioni
	$PDO->rollBack();
	
	// eventuale il messaggio di errore
	echo $e->getMessage();
	}

Effettuare transazioni con PDO potrebbe quindi risultare particolarmente comodo, si tenga però conto che non tutti i Database Manager offrono il supporto per le Transaction; PDO->beginTransaction(), cioè il metodo che ha il compito di avviare la transazione, eseguirà una verifica a livello di driver e, se il DBMS non dovesse supportare tali costrutti, restituirà FALSE come valore di ritorno.

Post correlati
I più letti del mese
Tematiche