PHP PDO 參考手冊
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 語句時,會自動進行一個隐式地事務送出。
隐式地送出将阻止你在此事務範圍内復原任何其他更改。
傳回值
成功時傳回 TRUE, 或者在失敗時傳回 FALSE。
執行個體
復原一個事務
下面例子在復原此更改前開始一個事務并發出兩條修改資料庫的語句。
但在 MySQL 中,DROP TABLE 語句自動送出事務,使得在此事務中的任何更改都不會被復原。
<?php
/* 開始一個事務,關閉自動送出 */
$dbh->beginTransaction();
/* 更改資料庫架構及資料 */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* 識别出錯誤并復原更改 */
$dbh->rollBack();
/* 資料庫連接配接現在傳回到自動送出模式 */
?>