gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:39:36 26 4
gpt4 key购买 nike

如果用户不按提交按钮,我会使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com