mysql - 从特定表中最后插入的 id

标签 mysql

SELECT LAST_INSERT_ID() as id FROM table1

为什么这个查询有时会返回最后插入的另一个表的 id,而不是 table1? 我在 Node.js(db-mysql 插件)中调用它,我只能做查询。

最佳答案

LAST_INSERT_ID() 只能告诉您最近自动生成的 IDID 整个数据库连接,而不是针对每个单独的表,这也是为什么查询应该只读取 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/

相关文章:

mysql - 根据最大值删除一行

php - 带彩色按钮的 Laravel 查询

php - Laravel unnioAll 多查询之间

mysql - 有没有办法使用准备好的语句来选择变量列?

MySQL 连接字符串错误

c# - 为什么entity framework+mysql provider枚举返回部分结果无一异常(exception)

mysql - 我应该规范数据库中的时间记录吗?

php - 在所有表中搜索字符串并使用分页技术显示它

php - 插入mysql不完整值字段

Mysql 外键创建