使用事務處理的話,需要數據庫引擎支持事務處理。比如 MySQL 的 MyISAM 不支持事務處理,需要使用 InnoDB 引擎。
使用 transaction 方法操作數據庫事務,當發生異常會自動回滾,例如:
自動控制事務處理
~~~
Db::transaction(function(){
Db::table('think_user')->find(1);
Db::table('think_user')->delete(1);
});
~~~
也可以手動控制事務,例如:
~~~
// 啟動事務
Db::startTrans();
try{
Db::table('think_user')->find(1);
Db::table('think_user')->delete(1);
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
~~~
> 注意在事務操作的時候,確保你的數據庫連接是相同的。
點贊