使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。
使用 transaction 方法操作数据库事务,当发生异常会自动回滚,例如:
1.自动控制事务处理
1 Db::transaction(function(){ 2 Db::table('user')->find(1); 3 Db::table('user')->delete(1); 4 });
2.手动控制事务,例如:
1 // 启动事务 2 Db::startTrans(); 3 try{ 4 Db::table('user')->find(1); 5 Db::table('user')->delete(1); 6 // 提交事务 7 Db::commit(); 8 } catch (Exception $e) { 9 // 回滚事务 10 Db::rollback(); 11 }