ThinkPHP中的事務操作
事務(Transaction)在計算機術語中是指訪問並可能更新數據庫中各種數據項的一個程序執行單元(unit)。事務應該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱爲ACID特性。
當需要實現多個表均完成纔可進行下一步的操作時,可利用事務的方法處理數據,實現事務中包括的諸操作要麼都做,要麼都不做的功能。
在ThinkPHP中,事務的基本操作方法如下:
//實例化M()方法
$Model = M();
//開啓事務
$Model->startTrans();
//處理數據(此處爲測試數據,可改)
$map['cClassId'] = $Id;
$delClass = $Model->table('Class') -> where($map) ->delete();
$delManager = $Model->table('Classmanager') -> where($map) -> delete();
//根據返回值判斷是否均執行成功
if ($delManager && $delClass) {
//執行成功,提交事務
$Model->commit();
$this->success('刪除成功');
}
else{
//任一執行失敗,執行回滾操作,相當於均不執行
$Model->rollback();
$this->error('刪除失敗');
}