PDO::beginTransaction

PHP PDO 参考手册PHP PDO-Referenzhandbuch

PDO::beginTransaction startet eine Transaktion (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)


Beschreibung

Syntax

bool PDO::beginTransaction ( void )

Schaltet den Auto-Commit-Modus aus. Solange der Auto-Commit-Modus ausgeschaltet ist, werden Änderungen, die über die PDO-Objektinstanz an der Datenbank vorgenommen werden, nicht festgeschrieben, bis die Transaktion durch Aufruf von PDO::commit() beendet wird.

Der Aufruf von PDO::rollBack() macht Änderungen an der Datenbank rückgängig und versetzt die Datenbankverbindung zurück in den Auto-Commit-Modus.

Einige Datenbanken, einschließlich MySQL, führen automatisch einen impliziten Transaktions-Commit aus, wenn eine DDL-Anweisung wie DROP TABLE oder CREATE TABLE ausgegeben wird.

Dieser implizite Commit verhindert, dass Sie andere Änderungen innerhalb des Transaktionsbereichs zurückrollen können.


Rückgabewerte

Gibt bei Erfolg TRUE zurück, bei Fehlschlag FALSE.

Beispiele

Zurückrollen einer Transaktion

Das folgende Beispiel startet eine Transaktion und führt zwei Anweisungen aus, die die Datenbank ändern, bevor die Änderungen zurückgerollt werden.

In MySQL wird die Transaktion jedoch durch die Anweisung DROP TABLE automatisch festgeschrieben, sodass alle Änderungen innerhalb dieser Transaktion nicht zurückgerollt werden.

<?php
/* 开始一个事务,关闭自动提交 */
$dbh->beginTransaction();

/*  更改数据库架构及数据 */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
    SET name = 'hamburger'");

/*  识别出错误并回滚更改 */
$dbh->rollBack();

/* 数据库连接现在返回到自动提交模式 */
?>

PHP PDO 参考手册PHP PDO-Referenzhandbuch

Andere Erweiterungen