
使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。
ThinkPHP5.0
使用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();}
ThinkPHP5.1
最简单的方式是使用 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();}
注意在事务操作的时候,确保你的数据库连接使用的是同一个。
V5.1.13+版本开始,可以支持MySQL的XA事务用于实现全局(分布式)事务,你可以使用:
Db::transactionXa(function () { Db::connect('db1')->table('think_user')->delete(1); Db::connect('db2')->table('think_user')->delete(1);}, [Db::connect('db1'),Db::connect('db2')]);
要确保你的数据表引擎为InnoDB,并且开启XA事务支持。
Atas ialah kandungan terperinci ThinkPHP5中的事务操作. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Bagaimana untuk menyelesaikan masalah pelayan dns tidak bertindak balas
Bagaimana untuk menggunakan video dalam java
Senarai lengkap kekunci pintasan idea
Penggunaan uniqueResult
Tujuan arahan rm-rf dalam linux
Pertukaran yang mana syiling FIL digunakan?
Bagaimana untuk membuka fail gff
Penyelesaian kepada sambungan gagal antara wsus dan pelayan Microsoft