PDO::rollBack
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::rollBack —
トランザクションをロールバックする
説明
public PDO::rollBack(): bool
データベースがオートコミットモードに設定されている場合、
この関数はトランザクションをロールバックした後に
オートコミットモードを元に戻します。
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();
/* データベース接続はオートコミットモードに戻る */
?>