在Laravel中使用数据库事务
不要盲目而残忍地成为,这世界恶意的一部分。
使用闭包
在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法。如果在事务的闭包内抛出异常,事务将会被自动还原。如果闭包运行成功,事务将被自动提交。你不需要担心在使用 transaction 方法时还需要亲自去手动还原或提交事务:
1 | DB::transaction(function () { |
手动创建事务
如果你想手动处理事务并对还原或提交操作进行完全控制,则可以在 DB facade 使用 beginTransaction 方法:
1 | DB::beginTransaction(); //事务开始 |
注意: DB facade 的事务方法也可以用来控制 查询语句构造器 及 Eloquent ORM 的事务, 在事务中一定要定义回滚的条件, 可以用 try - catch 来捕获异常回滚, 或者是我们上面所写的这样, 根据一定的条件去判断回滚.事务的最终状态要么被提交, 要么回滚.
注意
创建表的时候一定要使用InnoDB存储引擎
1 | public function up() |
如何查看某一张表使用的存储引擎
1 | show create table 表名; |
修改某一张表的存储引擎
1 | alter table bulk_tb_billnos engine=innodb |
看你的mysql当前默认的存储引擎
1 | show variables like '%storage_engine%'; |