【发布时间】:2014-08-02 06:42:07
【问题描述】:
我在模型中有这段代码:
$this->db->insert($this->transaction_tbl, $data);
if($this->db->affected_rows() == 1){
$new_balance = $result['balance'] + $data['amount'];
$this->db->update($this->account_tbl, array('balance' => $new_balance), array('id' => $data['account_id']));
if($this->db->affected_rows() == 1){
return $data;
}
}
return "error";
代码正在做它应该做的事情(创建一个新的存款交易并更新账户余额)。
我的问题是:如果在insert 之后和if 之前发生另一个插入/更新查询(并且不影响任何行)怎么办? $this->db->affected_rows() 是否仍会返回 1 并继续正确更新?
换句话说:是否会连续执行 2 或 3 个连续查询,即使其中出现新的查询?
如果答案是:
因为$this->db 是一个不同的实例,所以它不会受到影响,那么很抱歉您花时间阅读一个不太聪明的问题。
我不熟悉数据库中时间和优先级的概念,所以我不确定问题是关于 codeigniter 活动记录还是有类似问题的一般数据库问题
如果重要的话,我会在 mysql 中进行测试。
【问题讨论】:
-
$this->db->affected_rows() 总是返回受上次查询影响的行数......如果更新/插入查询不影响任何行,则返回“0”