首页你的数据库引擎必须为 InnoDB
引擎才能使用。比如 MySQL
的 MyISAM
不支持事务处理,需要使用 InnoDB
引擎。
哪个数据表需要事务操作,就更改哪个表的数据库引擎也可以。
表改引擎方法:【数据库表上右键】→【设计表】→【选项】→【引擎】→【InnoDB】
TP6
提供了 3 种事务操作 API:
- 自动处理:transaction
- 手动处理:startTrans
- 分布式事务:我没用过,请查其它资料。
使用的时候注意啊。注意 注意 注意 控制器加载
use think\facade\Db;
最简单的方式是使用 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(