jjzjj

php - SQL 代码点火器 : Create savepoint and roll-back to the savepoint/Rollback multiple transaction from controller

coder 2023-10-13 原文

如果用户不按提交按钮,我会使用 ajax 请求从页面处理数据库事务,而不是回滚由 ajax 请求完成的所有 sql 事务(我将管理这个,但如果刷新当前页面,当前遵循的逻辑不起作用) .

我已经尝试了下面的代码但没有工作,

function viewPage(){
   $needRollBack=$this->session->userdata('needRollBack');
   if($needRollBack){
      $this->db->trans_rollback();
   }
   $this->db->trans_begin();
   $this->MyModel1->insert(.....);
   $this->MyModel2->insert(.....);
.........................
}

function submitDetails(){
   $this->db->trans_complete();
   $this->session->set_userdata('needRollBack',false);
}

viewPage() 函数再次调用或刷新页面时,如果 submitDetails() 未被调用,则回滚所有通过 ajax 请求完成的 sql 事务(从 trans_begin() 开始) ) 会滚烤吗? 这可能吗?请指导我...

最佳答案

这里有很多事情需要解决。

首先是您的数据库和模式类型必须支持事务(例如,如果您在 MySQL 中使用 MyISAM 表类型,您将无法使用事务)。

其次,如果 $this->db->trans_status() === false,测试事务是否在 CI 中成功,您将错误消息写入错误日志。

最后,我会使用一种替代方法来替代上述方法(如果可能的话)——一种可能的方法是将您的数据存储在一个 session 中(通过不同的阶段)并在最后一点进行调用或多个数据库调用(当用户点击提交时)。您仍然可以通过这种方式使用事务,它简化了问题。

关于php - SQL 代码点火器 : Create savepoint and roll-back to the savepoint/Rollback multiple transaction from controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25499830/

有关php - SQL 代码点火器 : Create savepoint and roll-back to the savepoint/Rollback multiple transaction from controller的更多相关文章

随机推荐