首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

ThinkPHP 資料庫事務回滾機制實現與代碼實戰示例

     編輯:PHP 相關知識

ThinkPHP 資料庫事務回滾機制實現與代碼實戰示例

ThinkPHP 封裝了事務操作方法,支援多模型數據一致性保障。本文展示標準事務代碼結構及必要條件。

標準事務代碼

$m  = D('YourModel');  // 或 M()
$m2 = D('YourModel2');

$m->startTrans(); // 啟動事務(任一模型調用即可)

$result  = $m->where('刪除條件')->delete();
$result2 = $m2->where('刪除條件')->delete();

if ($result && $result2) {
    $m->commit();   // 提交事務
} else {
    $m->rollback(); // 回滾事務
}

關鍵點

  • startTrans()、commit()、rollback() 均為模型實例方法
  • 事務啟動後,同一數據庫連接內的所有寫操作納入事務
  • 異常拋出時自動回滾(建議包裹 try-catch)

必要條件:存儲引擎支援

MySQL 必須使用 InnoDB 或 BDB 存儲引擎,MyISAM 不支援事務,操作將靜默失效(不報錯但不回滾)。

-- 檢查表引擎
SHOW TABLE STATUS LIKE 'your_table';
-- 修改引擎
ALTER TABLE your_table ENGINE=InnoDB;

進階用法

try {
    $m->startTrans();
    // 多步業務邏輯
    $m->save($data1);
    $m2->save($data2);
    $m3->delete($id);
    $m->commit();
} catch (\Exception $e) {
    $m->rollback();
    // 記錄日誌、拋出業務異常
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved