我在codeigniter中使用SQL Transactions。 根据文档,手动交易完成如下。
$this->db->trans_begin();
$this->db->query('UPDATE ...'); // SQL 1
$this->db->query('SELECT ...'); // SQL 2
$this->db->query('SELECT ...'); // SQL 3
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
}
else
{
$this->db->trans_commit();
}
现在我的问题是会发生什么,如果我在SQL1和SQL2中放置一个die / exit语句?如果我想返回false,则取决于SQL1。我需要在返回false之前放入$ this-> db-> trans_rollback()吗?这样做的最佳做法是什么?
答案 0 :(得分:0)
这取决于你想要达到的目标。如果您希望SQL1仍然执行,您应该执行trans_commit()然后返回FALSE。所以这一切都取决于你网站的逻辑。
无论如何,通常在结束之前应该是trans_commit()或trans_rollback()。