PHP マニュアル
前のページ |  | 次のページ

# 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()

前のページ | ホーム | 次のページ
PDO 関数 | 上に戻る | PDO::commit