PDO::beginTransaction
(no version information, might be only in CVS)
PDO::beginTransaction --
トランザクションを開始する
説明
bool
PDO::beginTransaction ( void )
オートコミットモードをオフにします。オートコミットモードがオフの間、
PDO オブジェクトを通じてデータベースに加えた変更は
PDO::commit() をコールするまでコミットされません。
PDO::rollback() をコールすると、
データベースへの全ての変更をロールバックし、
オートコミットモードに設定された接続を返します。
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::commit() |
PDO::rollBack() |