如果同时插入两个记录,如何获取最后一个ID

时间:2018-08-21 12:20:01

标签: php mysql mysqli codeigniter-3

我有一个查询,我已经以在数据库中创建的条目的方式编写了一个程序,并且我得到了last_id,使用该最后的id在第二张表中进行了更新。

$table='user';
$data = array('array having user data');
$this->db->insert($table, $data);
$last_id = $this->db->insert_id();

$this->db->where('user_id', $last_id);
$this->db->set('wallet_total_amount', "wallet_total_amount");

在这样的程序中,当两个条目恰好同时创建时,第二个事务的ID随第一个记录更新。 如何避免这种情况。请提出建议。

1 个答案:

答案 0 :(得分:-2)

您需要使用事务,基本上是在另一个查询之后提交一个查询。事务使您可以一次执行一组查询,锁定数据库直到运行所有查询(或在发生错误时回滚)。

用户1

自动提交

  1. 运行查询1(插入数据)
  2. 检索last_insert_id
  3. 使用last_insert_id运行查询2

提交

用户2

自动提交

  1. 运行查询1(插入数据)
  2. 检索last_insert_id
  3. 使用last_insert_id运行查询2

提交

要在codeigniter中使用事务,请查看this答案。 Here您可以找到PHP文档。