PDO::beginTransaction

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

PDO::beginTransactionStartet eine Transaktion

Beschreibung

publicPDO::beginTransaction(): bool

Deaktiviert den Autocommit-Modus. Wenn der Autocommit-Modus deaktiviert ist, werden Änderungen, die über die Instanz eines PDO-Objekts an der Datenbank vorgenommen werden, erst dann bestätigt, wenn die Transaktion durch den Aufruf von PDO::commit() beendet wird. Wenn PDO::rollBack() aufgerufen wird, werden alle Änderungen an der Datenbank rückgängig gemacht und die Verbindung wird wieder in den Autocommit-Modus versetzt.

Einige Datenbanken, darunter auch MySQL, führen automatisch ein implizites COMMIT durch, wenn innerhalb einer Transaktion eine DDL- (Database Definition Language) Anweisung wie DROP TABLE oder CREATE TABLE ausgeführt wird. Durch das implizite COMMIT wird verhindert, dass andere Änderungen, die in dieser Transaktion vorgenommen wurden, 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 bereits eine Transaktion gestartet wurde oder der Treiber keine Transaktionen unterstützt, 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 (Rollback) 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

$dbh->beginTransaction();


$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'"
);


$dbh->rollBack();


?>

Siehe auch

To Top