AUTO_INCREMENT和LAST_INSERT_ID

use*_*026 10 mysql

我正在使用AUTO_INCREMENT,我想获得插入行的ID,以便我可以使用ID2个表之间的公共字段更新另一个表.

我明白这LAST_INSERT_ID会得到最后的结果ID.但是,我担心的是,许多用户同时访问数据库.因此,可能有另一个进程访问该表并同时插入一个新行.

是否LAST_INSERT_ID返回刚刚过去的ID,无论使用的连接,或者只返回最后一个ID为我使用的连接?

请注意,我正在使用tomcat服务器中的连接池访问mySql数据库.

编辑:在夏天,我需要在表A中插入一行自动增量,而不是我需要在表B中插入行,需要使用自动增量值链接到表A.

use*_*117 15

SELECT max(employeeid) FROM Employee;
Run Code Online (Sandbox Code Playgroud)

上面的查询返回Employee表中最后插入记录的employeeid值,因为employeeid是一个自动增量列.这似乎没问题,但假设两个线程同时执行插入操作,有可能你得到错误的最后插入记录的id!不用担心,MySQL提供了一个返回最后插入记录的自动增量列值的函数.

SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)

LAST_INSERT_ID()始终是特定于连接的,这意味着即使从不同的连接同时执行插入操作,它也始终返回当前连接特定操作的值.所以你必须首先在Employee表中插入记录,运行上面的查询来获取id值并使用它在第二个表中插入