PDO::rollBack
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::rollBack — Macht eine Transaktion rückgängig (Rollback)
Beschreibung
public PDO::rollBack():
bool
Falls die Datenbank auf den Autocommit-Modus eingestellt war, wird er
wiederhergestellt, nachdem die Transaktion zurückgesetzt wurde.
Wenn im Rahmen einer Transaktion eine DDL- (Database Definition Language)
Anweisung wie DROP TABLE oder CREATE TABLE ausgeführt wird, geben einige
Datenbanken, darunter auch MySQL, ein implizites COMMIT aus. Durch das
implizite COMMIT wird verhindert, dass weitere im Rahmen der Transaktion
vorgenommene Änderungen rückgängig gemacht werden können.
Parameter-Liste
Diese Funktion besitzt keine Parameter.
Rückgabewerte
Gibt bei Erfolg true
zurück. Bei einem Fehler wird false
zurückgegeben.
Fehler/Exceptions
Wenn es keine aktive Transaktion gibt, wird eine
PDOException ausgelöst.
Hinweis: Eine Exception wird auch dann ausgelöst, wenn das Attribut PDO::ATTR_ERRMODE
nicht PDO::ERRMODE_EXCEPTION
ist.
Beispiele
Beispiel #1 Rückgängigmachen einer Transaktion
Im folgenden Beispiel wird eine Transaktion gestartet und es werden zwei
Anweisungen ausgeführt, die die Datenbank verändern, bevor die Änderungen
rückgängig gemacht werden. Bei MySQL wird die Transaktion jedoch durch
die Anweisung DROP TABLE automatisch bestätigt, sodass keine der
Änderungen dieser Transaktion rückgängig gemacht wird.
<?php
/* Starten einer Transaktion, wobei Autocommit deaktiviert wird */
$dbh->beginTransaction();
/* Ändern des Datenbankschemas und der Daten */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* Erkennen eines Fehlers und Zurücknehmen der Änderungen */
$dbh->rollBack();
/* Die Datenbankverbindung ist nun wieder im Autocommit-Modus */
?>