如何从auto_increment表中获取最后一个插入ID,该表不是事务中最后一个插入的一部分?

时间:2013-08-06 16:04:28

标签: mysql sql-insert

是否可以从不是在最后一次插入中插入值的表的表中获取auto_increment主键的当前id?

我所处的情况如下:

1 - 我在Evaluation表中插入评估。

2 - 然后我在Evaluation_Details表中插入与使用last_insert_id()

评估相关的每个问题的结果

3 - 我最终根据问题的结果计算出评估所需的所有统计数据,并需要用它更新Evaluation表。

现在问题就在于此。我需要获取Evaluation表中最后一个插入的id,但last_insert_id()现在将返回Evaluatin_Details表中最后一个插入的id。

所有操作都在同一个事务中完成,每个表的id都有auto_increment

我知道查询:

SELECT `AUTO_INCREMENT`
FROM  INFORMATION_SCHEMA.TABLES"
WHERE TABLE_SCHEMA = 'database_name'
AND   TABLE_NAME   = 'table_name';

可以给我下一个要插入的id的值,但我不认为只是查询这个并且减去1来获得当前的id是好的做法。

编辑:我忘了添加多个用户可能同时插入数据。这就是为什么我没有使用MAX(id) from table_name

谢谢!

1 个答案:

答案 0 :(得分:0)

在您描述的第二步中,使用Evaluation_Details表插入中的last_insert_id()将多个记录插入Evaluation。由于您拥有此ID,因此可以将其存储在变量中并使用它来执行上一次查询