gpt4 book ai didi

mysql - 自动递增和最后插入 ID

转载 作者:行者123 更新时间:2023-11-29 16:40:25 24 4
gpt4 key购买 nike

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

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

无论使用什么连接LAST_INSERT_ID 是否只返回最后一个 ID,还是只返回我正在使用的连接的最后一个 ID ?

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

总之,我需要在表 A 中插入具有自动增量的行,而不是在表 B 中插入行,而表 B 需要使用 AUTO_INCRMENT 值链接到表 A。

最佳答案

SELECT max(employeeid) FROM Employee;

上面的查询返回 Employee 表中最后插入的记录的 employeeid 值,因为 employeeid 是一个自动递增列。这看起来没问题,但是假设两个线程同时执行插入操作,就有可能得到最后插入记录的错误id!

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

SELECT LAST_INSERT_ID();

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

因此,您必须首先在 Employee 表中插入记录,运行上述查询来获取 id 值,然后使用它插入到第二个表中。

关于mysql - 自动递增和最后插入 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53373228/

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