最后从特定表插入的id

ElS*_*jko 10 mysql

SELECT LAST_INSERT_ID() as id FROM table1
Run Code Online (Sandbox Code Playgroud)

为什么此查询有时会返回除table1之外的另一个表的最后插入的id?我在Node.js(db-mysql插件)中调用它,我只能进行查询.

Mic*_*sen 26

LAST_INSERT_ID()只可以告诉你最近的自动生成的ID的ID 为整个数据库的连接,而不是为每个单独的表,这也是为什么查询应该只读LAST_INSERT_ID()-由于没有指定的表.一旦在该连接上触发另一个INSERT查询,它就会被覆盖.如果在插入某个表时需要生成的ID,则必须ID在执行此操作后立即运行(或使用一些为您执行此操作的API函数).

如果您想要当前在任意表中的最新ID,则必须ID在该表上执行,SELECT LAST_INSERT_ID()ID列的名称在哪里.但是,这不一定是最近生成的ID,如果该行已被删除,也不一定是从您的连接生成的,以防另一个连接设法在您自己的INSERT和您选择的ID之间执行INSERT.

(对于记录,您的查询实际返回包含该数据库连接上最近生成的ID的N行,其中N是table1中的行数.)