PDO::rollBack — トランザクションをロールバックする (PHP 5 >= 5.1.0、PECL pdo >= 0.1.0)
bool PDO::rollBack ( void )
PDO::beginTransaction() によって開始された現在のトランザクションをロールバックします。アクティブなトランザクションがない場合は、PDOException がスローされます。
データベースが自動コミット モードに設定されている場合、この関数 (メソッド) はトランザクションをロールバックした後に自動コミット モードを復元します。
MySQL などの一部のデータベースでは、トランザクション内でデータ テーブルの削除や作成などの DLL ステートメントがあると、自動的に暗黙的なコミットが発生します。暗黙的にコミットすると、このトランザクションの範囲内の変更をロールバックできなくなります。
成功した場合は TRUE を返し、失敗した場合は FALSE を返します。
次の例では、トランザクションを開始し、変更をロールバックする前にデータベースを変更する 2 つのステートメントを発行します。ただし、MySQL では、DROP TABLE ステートメントによってトランザクションが自動的にコミットされるため、このトランザクション内の変更はロールバックされません。
<?php/* トランザクションを開始し、自動コミットをオフにします*/$dbh->beginTransaction();/* データベースのスキーマとデータを変更します*/$sth = $dbh->exec("DROP TABLE Fruit"); $sth = $dbh->exec("UPDATE dessert SET name = 'hamburger'");/* エラーを認識し、変更をロールバックします*/$dbh->rollBack();/*この時点で、データベース接続は自動コミット モードに戻ります*/?>