如何回滚或提交多个sql server存储过程?

时间:2016-06-10 20:26:54

标签: php sql-server stored-procedures transactions cakephp-2.0

我目前正在开发cakephp 2.0上的proyect,我需要将多个用户插入到sql server数据库中。

如果某些内容失败,我需要进行回滚,但如果存储过程失败则无需进行回滚,但如果php文件逻辑中的某些内容失败则会引发异常以进行回滚。

代码的工作原理如下:

try {
    ...$this->db->beginTransaction();//The connection to the DB is already on.
    foreach($users as $user){
        //some logic       

        if(something) {
            throw new Exception('blah blah');
        }

        $query = $this->sqlsrv->prepare('storedProcedure1');
        //bind parameters

        if(!$query->execute()) {
            throw new Exception('blah blah');
        }

        //some logic...

        if(something) {
            throw new Exception('blah blah');
        }

        $query = $this->sqlsrv->prepare('storedProcedure2');
        bind parameters

        if(!$query->execute()) {
            throw new Exception('blah blah');
        }    

    }
    $this->db->commit();
}
catch (Exception $e){
    $this->db->rollBack();
}

我不知道这样的事情是否可行,函数返回true,但是存储过程中的成功插入仍然存在,并且即使它们成功,我也希望收回所有这些。

0 个答案:

没有答案