数据库事务在控制器 codeigniter 中不起作用
Posted
技术标签:
【中文标题】数据库事务在控制器 codeigniter 中不起作用【英文标题】:Database transaction not working in controller codeigniter 【发布时间】:2014-10-10 23:20:57 【问题描述】:我在控制器中调用多个模型,所有模型都进行数据库查询。 我做了这样的事情
public function InsertSale()
$this->db->trans_start(TRUE);
// all logic part and models calling which do insert/update/delete
$this->db->trans_complete();
即使在某些查询后出现故障,上述代码也无法正常工作。
【问题讨论】:
为什么你还要在任何你想称之为“控制器”的东西中使用数据库事务?! 相关ellislab.com/forums/viewthread/101648 删除TRUE
尝试使用$this->db->trans_start();
默认为true。我正在使用像你这样的事务并且工作正常。所以它也应该适合你。
@tereško 对于涉及多个模型的更改,例如。
@Sebastianb 你所说的“模特”是什么意思?
【参考方案1】:
在$this->db->trans_start(true);
中包含true
会将事务置于测试模式,这意味着无论发生什么,查询都将回滚。
如果您想查看查询是否有效,您可以使用:
$this->db->trans_status();
根据结果返回true
/false
。
【讨论】:
【参考方案2】:所以你必须像这样跟随
$this->db->trans_start(); # Starting Transaction
$this->db->trans_strict(FALSE);
$this->db->insert('table_name', $someDataArray); # Inserting data
# Updating data
$this->db->where('id', $id);
$this->db->update('table_name', $someDataArray);
$this->db->trans_complete();
这很好。 Check this answer too
【讨论】:
以上是关于数据库事务在控制器 codeigniter 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
ng-click 在 ajax 数据表 + codeigniter 中不起作用