PDO::rollBack

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::rollBackMacht eine Transaktion rückgängig (Rollback)

Beschreibung

public PDO::rollBack(): bool

Macht die aktuelle durch PDO::beginTransaction() gestartete Transaktion rückgängig.

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 */
?>

Siehe auch