PDO::rollBack -- Anulează o tranzacţie
Descriere
bool PDO::rollBack ( void )
Anulează tranzacţia curentă iniţiată de PDO::beginTransaction(). Dacă nu este activă nicio tranzacţie, apare o eroare.
Dacă baza de date a fost setată în mod autocommit, această funcţie va restaura modul autocommit după anularea tranzacţiei.
Unele baze de date, inclusiv MySQL, emit automat o instrucţiune implicită COMMIT atunci când în timpul tranzacţiei este emisă o instrucţiune DDL (database definition language), cum ar fi DROP TABLE sau CREATE TABLE. Instrucţiunea implicită COMMIT elimină anularea modificărilor din acea tranzacţie.
Exemplu. Anularea unei tranzacţii
Următorul exemplu începe o tranzacţie şi emite două instrucţiuni care modifică baza de date înainte de a anula modificările. În MySQL, instrucţiunea DROP TABLE încheie automat tranzacţia astfel încât nicio modificare din tranzacţie nu este anulată.
<?php
/* Incepe o tranzactie, inchide autocommit */
$dbh->beginTransaction();
/* Modifica schema bazei de date si datele*/
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* Recunoaste greseala si anuleaza modificarile */
$dbh->rollBack();
/* Conexiunea la baza de date revine la modul autocommit */
?>