SELECT LAST_INSERT_ID() as id FROM table1
为什么这个查询有时会返回最后插入的另一个表的 id,而不是 table1? 我在 Node.js(db-mysql 插件)中调用它,我只能做查询。
最佳答案
LAST_INSERT_ID()
只能告诉您最近自动生成的 ID
的 ID
整个数据库连接,而不是针对每个单独的表,这也是为什么查询应该只读取 SELECT LAST_INSERT_ID()
- 而无需指定表。
一旦您在该连接上触发另一个 INSERT
查询,它就会被覆盖。如果您希望在插入某个表时生成 ID
,您必须在执行此操作后立即运行 SELECT LAST_INSERT_ID()
(或使用某些 API为你做这件事的功能)。
如果您想要当前在任意表中的最新ID
,您必须对该表执行SELECT MAX(id)
,其中id
是您的 ID
列的名称。但是,这不一定是最近生成的 ID
,以防该行已被删除,也不一定是从您的连接生成的,以防另一个连接设法执行 INSERT
在您自己的 INSERT
和您选择的 ID
之间。
(郑重声明,您的查询实际上返回 N 行,其中包含该数据库连接上最近生成的 ID,其中 N 是 table1
中的行数。)
关于mysql - 从特定表中最后插入的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12125385/