PDO::rollBack
(no version information, might be only in CVS)
PDO::rollBack --
トランザクションをロールバックする
説明
bool
PDO::rollBack ( void )
PDO::beginTransaction() によって開始された
現在のトランザクションをロールバックします
有効なトランザクションがない場合にこのメソッドをコールすると
エラーになります。
データベースがオートコミットモードに設定されている場合、
この関数はトランザクションをロールバックした後に
オートコミットモードを元に戻します。
MySQL を含むいくつかのデータベースでは、DROP TABLE や CREATE TABLE
のようなデータベース定義言語 (DDL) ステートメントがトランザクション中に
発行される場合、暗黙的なコミットが自動的に発行されます。
この暗黙的なコミットにより、そのトランザクション境界で
他のあらゆる変更をロールバックすることができなくなるでしょう。
例
例 1. トランザクションをロールバックする
以下の例は、トランザクションを開始し、
変更をロールバックする前にデータベースを修正する
2 つのステートメントを発行します。
しかしながら MySQL では、DROP TABLE ステートメントは
自動的にトランザクションをコミットするので、
トランザクション中のどの変更もロールバックされません。
<?php /* トランザクションを開始する。オートコミットがオフになる */ $dbh->beginTransaction();
/* データベーススキーマとデータを変更する */ $sth = $dbh->exec("DROP TABLE fruit"); $sth = $dbh->exec("UPDATE dessert SET name = 'hamburger'");
/* ミスに気づき、変更をロールバックする */ $dbh->rollBack();
/* データベース接続はオートコミットモードに戻る */ ?>
|
|
参考
PDO::beginTransaction() |
PDO::commit() |