## 事务支持 >[danger]#### 注意: > * * * * * >由于需要用到事务的功能,请先修改数据表的类型为`InnoDB`,而不是`MyISAM`。 对于事务的支持,最简单的方法就是使用`transaction`方法,只需要把需要执行的事务操作封装到闭包里面即可自动完成事务,例如: ~~~ Db::transaction(function () { Db::table('think_user') ->delete(1); Db::table('think_data') ->insert(['id' => 28, 'name' => 'thinkphp', 'status' => 1]); }); ~~~ 一旦`think_data`表写入失败的话,系统会自动回滚,写入成功的话系统会自动提交当前事务。 也可以手动控制事务的提交,上面的实现代码可以改成: ~~~ // 启动事务 Db::startTrans(); try { Db::table('think_user') ->delete(1); Db::table('think_data') ->insert(['id' => 28, 'name' => 'thinkphp', 'status' => 1]); // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); } ~~~ >[danger]#### 注意: > * * * * * > 事务操作只对支持事务的数据库,并且设置了数据表为事务类型才有效,在Mysql数据库中请设置表类型为`InnoDB`。并且事务操作必须使用同一个数据库连接。