#1 jake

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");  // 没有问题,那么事务提交。
}
以上就是事务的实现,不过一般情况下不需要使用到这些,只有在大并发或数据库管理的时候才需要用到,请谨慎。

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


2012-08-04 17:02:05