手册 >> 数据模型 >> 事务支持

事务支持

SpeedPHP框架中,对于数据库“事务”的支持,是通过runSql来执行SQL语句实现的。

开发者可以自行覆盖spModel的方法来对事务进行封装,因为spModel本身的绝大部分函数,对数据库的操作都是一条SQL的,所以对事务的封装没有很大的必要。

如果应用程序内,spModel的派生类内,有比较复杂的数据处理,那么将这个处理和事务封装到覆盖的方法里,这是更轻便的OOP做法。

使用事务就是在进行一系列数据库操作前和后使用spModel的runSql来发送SQL命令进行事务的开启和关闭。

 

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

$g = spClass("lib_guestbook");

// 开启事务

$g->query("START TRANSACTION"); // 或者是$g->query("BEGIN");

// 这里是很多的插入或修改操作等,一般来说查询不需要用事务的。

$result1 = $g->create(xxx);

$result2 = $g->update(xxx);

...

// 这里判断操作是否成功,然后回滚或提交事务

if( false == $result1 || false == $result2 || ... ){ // create、update之类的返回false即是操作失败,也有可能是字段错误

$g->query("ROLLBACK");  // 出现问题,事务回滚

}else{

$g->query("COMMIT");  // 没有问题,那么事务提交。

}

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