gpt4 book ai didi

mysql - AUTO_INCREMENT 和 LAST_INSERT_ID

转载 作者:IT王子 更新时间:2023-10-29 00:31:27 24 4
gpt4 key购买 nike

我正在使用 AUTO_INCREMENT,我想获取插入行的 ID,以便我可以使用 ID 作为两个表之间的公共(public)字段来更新另一个表。

我知道 LAST_INSERT_ID 将获得最后一个 ID。但是,我担心的是,许多用户同时访问数据库。因此,可能有另一个进程访问了该表并同时插入了一个新行。

LAST_INSERT_ID 是只返回最后一个 ID 而不管使用的连接,还是只返回我正在使用的连接 的最后一个 ID ?

注意,我正在使用 Tomcat 服务器中的连接池访问 MySQL 数据库。

总而言之,我需要在表 A 中插入一行并自动递增,而我需要在表 B 中插入一行,这需要使用 AUTO_INCREMENT 值链接到表 A。

最佳答案

SELECT max(employeeid) FROM Employee;

上面的查询返回 Employee 表中最后插入记录的 employeeid 的值,因为 employeeid 是一个自增列。这似乎没问题,但是假设两个线程同时执行插入操作,你可能会得到最后插入记录的错误ID!

别担心,MySQL 提供了一个函数,它返回最后插入记录的自增列的值。

SELECT LAST_INSERT_ID();

LAST_INSERT_ID()始终是特定于连接的,这意味着即使从不同的连接同时执行插入操作,它也始终返回当前特定于连接的操作的值。

所以你必须先在 Employee 表中插入记录,运行上面的查询来获取 id 值并用它来插入到第二个表中。

关于mysql - AUTO_INCREMENT 和 LAST_INSERT_ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14827783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com