请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 5936|回复: 0

[数据模型] 数据库事务支持

[复制链接]
发表于 2012-8-4 17:02:05 | 显示全部楼层 |阅读模式
SpeedPHP框架中,对于数据库“事务”的支持,是通过runSql来执行SQL语句实现的。

开发者可以自行覆盖spModel的方法来对事务进行封装,因为spModel本身的绝大部分函数,对数据库的操作都是一条SQL的,所以对事务的封装没有很大的必要。
如果应用程序内,spModel的派生类内,有比较复杂的数据处理,那么将这个处理和事务封装到覆盖的方法里,这是更轻便的OOP做法。
使用事务就是在进行一系列数据库操作前和后使用spModel的runSql来发送SQL命令进行事务的开启和关闭。

使用事务首先要保证mysql的类型是innoDB

  1. $g = spClass("lib_guestbook");
  2. // 开启事务
  3. $g->query("START TRANSACTION"); // 或者是$g->query("BEGIN");
  4. // 这里是很多的插入或修改操作等,一般来说查询不需要用事务的。
  5. $result1 = $g->create(xxx);
  6. $result2 = $g->update(xxx);
  7. ...
  8. // 这里判断操作是否成功,然后回滚或提交事务
  9. if( false == $result1 || false == $result2 || ... ){ // create、update之类的返回false即是操作失败,也有可能是字段错误
  10. $g->query("ROLLBACK");  // 出现问题,事务回滚
  11. }else{
  12. $g->query("COMMIT");  // 没有问题,那么事务提交。
  13. }
  14. 以上就是事务的实现,不过一般情况下不需要使用到这些,只有在大并发或数据库管理的时候才需要用到,请谨慎。
复制代码

以上就是事务的实现,不过一般情况下不需要使用到这些,只有在大并发或数据库管理的时候才需要用到,请谨慎。


您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2020-7-5 17:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表