我目前正在开发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,但是存储过程中的成功插入仍然存在,并且即使它们成功,我也希望收回所有这些。