PESCMS的事务操作为全局影响的,即不论你是在控制器,模型还是扩展库等任意地方,只要是基于PESCMS的数据库连接方式,那么它的事务影响都是是全局的。不会存在事务异常的问题。
开启事务
要开启事务非常简单,只需在SQL语句执行之前声明如下代码则可:
- $this->db()->transaction();
开启事务后,除数据库的设置了事务自动提交,否则在全局影响下,不手动提交的话,内容是不会有任何变化的。
此外,ALTER操作会自动提交事务。因此在事务范围内,请避免ALTER操作。
回滚事务
当操作数据库操作失败时,需要回滚,那么执行如下代码:
- $this->db()->rollBack();
注:在任何地方调用回滚方法都不会报任何错误。PESCMS会自动判别调用rollBack()方法是否处于事务状态下。
为什么这样做呢?实际开发过程,某些方法可能是与事务挂钩一起使用的。当其他方法调用时,也需要声明事务,这样一来就显得过于繁琐了。因此PESCMS作了事务检测判断。
提交事务
程序对数据库操作执行完毕且没有任何错误时,需要对事务进行提交,那么执行如下代码:
- $this->db()->commit()