Zend:回滚提交



假设我启动一个事务,然后用提交完成它:

$db->beginTransaction();
// sql insert
// another sql insert
// a sql update
// another sql update
$db->commit();

有没有一个函数可以在commit()之后运行,以恢复beginTransaction和commit(()之间所做的所有更改?

提交后,您无法恢复更改,应改为调用rollback

回滚操作主要在事务中的任何一个实体失败时执行。因此,要捕捉故障,您应该使用try{}catch{}

$db->beginTransaction();
 try{
         $db->commit();//writes all data to database and reach to new state
 }catch(Exception $e)
  {
      $db->rollback();//roll back all changes made to database 
      echo  $e->getTraceAsString();
 }

这将恢复当前事务的更改:

$db->rollBack();

但是,在提交之后不能回滚。

如果你试图防止插入错误等,我会尝试这个:

try
{
    $db->beginTransaction();
    // sql insert
    // another sql insert
    // a sql update
    // another sql update
    $db->commit();
}
catch( Zend_Exception $e)
{
    $db->rollBack();
}

如果没有错误,这将提交,如果有错误,则回滚。

最新更新