Php/docs/pdo.rollback

提供:Dev Guides
< Php
移動先:案内検索

PDO::rollBack

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

PDO::rollBack トランザクションをロールバックする


説明

public PDO::rollBack ( ) : bool

PDO::beginTransaction() によって開始された 現在のトランザクションをロールバックします。

データベースがオートコミットモードに設定されている場合、 この関数はトランザクションをロールバックした後に オートコミットモードを元に戻します。

MySQL を含むいくつかのデータベースでは、DROP TABLE や CREATE TABLE のようなデータベース定義言語 (DDL) ステートメントがトランザクション中に 発行される場合、暗黙的なコミットが自動的に発行されます。 この暗黙的なコミットにより、そのトランザクション境界で 他のあらゆる変更をロールバックすることができなくなるでしょう。


返り値

成功した場合に true を、失敗した場合に false を返します。


エラー / 例外

有効なトランザクションがない場合に PDOException をスローします。

注意: 例外は、PDO::ATTR_ERRMODE 属性が PDO::ERRMODE_EXCEPTION ではない場合でも発生します。

例1 トランザクションをロールバックする

以下の例は、トランザクションを開始し、 変更をロールバックする前にデータベースを修正する 2 つのステートメントを発行します。 しかしながら MySQL では、DROP TABLE ステートメントは 自動的にトランザクションをコミットするので、 トランザクション中のどの変更もロールバックされません。


<?php/* トランザクションを開始する。オートコミットがオフになる */$dbh->beginTransaction();/* データベーススキーマとデータを変更する */$sth = $dbh->exec("DROP TABLE fruit");$sth = $dbh->exec("UPDATE dessert    SET name = 'hamburger'");/* ミスに気づき、変更をロールバックする */$dbh->rollBack();/* データベース接続はオートコミットモードに戻る */?>

参考