我有多个模型函数在事务完成之前执行。例如
$this->model_A->insert('....');
$this->model_C->insert('....');
$this->model_D->insert('....');
$this->model_E->update('....');
使用 trans_start() 和 trans_complete() 的最佳方式是什么,以便万一插入或更新过程在任何时候中断,事务可以相应地回滚或提交...
有没有可能我可以在我的 Controller 中使用下面这些行?像这样?
$this->db->trans_start();
$this->model_A->insert('....');
$this->model_C->insert('....');
$this->model_D->insert('....');
$this->model_E->update('....');
$this->db->trans_complete();
OR
$this->model_A->trans_start();
$this->model_A->insert('....');
$this->model_C->insert('....');
$this->model_D->insert('....');
$this->model_E->update('....');
$this->model_A->trans_complete();
这是一种好的做法吗?如果不是,处理此类交易的最佳方式是什么?
最佳答案
您的第一个选择是正确的。
事务逻辑在数据库级别。 Codeigniter 没有记录在“表格”级别执行此操作(请参阅 http://www.codeigniter.com/user_guide/database/transactions.html)。
您的第二个选择没有意义 - 事务包含不同的表。
关于mysql - Codeigniter:我可以在我的 Controller 函数中使用 $this->db->trans_start() 和 trans_complete 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23782230/