Sye*_*jid 7 mysql sql activerecord codeigniter
我有多个模型函数在事务完成之前执行.例如
$this->model_A->insert('....');
$this->model_C->insert('....');
$this->model_D->insert('....');
$this->model_E->update('....');
Run Code Online (Sandbox Code Playgroud)
什么是使用trans_start()和trans_complete()的最佳方式,因此插入或更新的过程在任何时候都可以被中断,事务可以相应地回滚或提交...
有没有可能我可以在我的控制器中使用以下这些行?像这样?
$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();
Run Code Online (Sandbox Code Playgroud)
如果不是处理此类交易的最佳方式,这是一种好的做法吗?
小智 8
你的第一个选择是正确的.
事务逻辑位于数据库级别.Codeigniter没有记录在"表"级别执行此操作(请参阅http://www.codeigniter.com/user_guide/database/transactions.html).
您的第二种选择没有意义 - 交易包含不同的表格.