PDO::beginTransaction 啟動一個交易(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
bool PDO::beginTransaction ( void )
關閉自動提交模式。自動提交模式關閉的同時,透過PDO 物件實例對資料庫所做的變更直到呼叫PDO::commit() 結束交易才被提交。
呼叫PDO::rollBack() 將回滾對資料庫做出的變更並將資料庫連線傳回自動提交模式。
包括MySQL 在內的一些資料庫,當發出類似DROP TABLE 或CREATE TABLE 這樣的DDL 語句時,會自動進行一個隱含地事務提交。
隱式地提交將阻止你在此交易範圍內回滾任何其他更改。
下面例子在回滾此變更前開始一個交易並發出兩個修改資料庫的語句。
但在MySQL 中,DROP TABLE 語句會自動提交事務,使得在此事務中的任何變更都不會被回滾。
<?php/* 開始一個事務,關閉自動提交*/$dbh->beginTransaction();/* 更改資料庫架構及資料*/$sth = $dbh->exec("DROP TABLE fruit");$sth = $dbh->exec("UPDATE dessert SET name = 'hamburger'");/*辨識出錯誤並回滾變更*/$dbh->rollBack();/* 資料庫連線現在回到自動提交模式*/?>