PDO::beginTransaction -- Iniţiază o tranzacţie
Descriere
bool PDO::beginTransaction ( void )
Închide modul autocommit. La închiderea modului autocommit, modificările făcute în baza de date printr-o instanţă obiect PDO nu sunt realizate până când nu se încheie tranzacţia cu apelarea PDO::commit(). Prin apelarea PDO::rollback() se anulează toate modificările din baza de date şi conexiunea se întoarce în modul autocommit.
Unele baze de date, inclusiv MySQL, emit în mod automat un COMMIT implicit atunci când este emisă într-o tranzacţie o instrucţiune DDL (database definition language), cum ar fi DROP TABLE or CREATE TABLE.
Instrucţiunea implicită COMMIT previne anularea modificărilor şi alte modificări din limitele tranzacţiei.
Exemplu. Anularea cu Roll back a unei tranzacţii
Următorul exemplu începe o tranzacţie şi emite două instrucţiuni care modifică baza de date înainte de anularea modificărilor. În MySQL, instrucţiunea DROP TABLE încheie automat tranzacţia, astfel încât nu este anulată nicio modificare.
<?php
/* Incepe tranzactia, este inchis autocommit */
$dbh->beginTransaction();
/* Modifica schema si datele bazei de date */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* Recunoaste greseala si anuleaza modificarile */
$dbh->rollBack();
/* Conexiunea bazei de date este in mod autocommit */
?>