# PDO::beginTransaction

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

PDO::beginTransaction — Startet eine Transaktion

### Beschreibung

public PDO::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
/* 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

- PDO::commit() - Bestätigt eine Transaktion
- PDO::rollBack() - Macht eine Transaktion rückgängig (Rollback)
- Transaktionen und Autocommit

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open