如何知道 mysql 中的下一个自动增量 ID 是啥? [复制]

Posted

技术标签:

【中文标题】如何知道 mysql 中的下一个自动增量 ID 是啥? [复制]【英文标题】:How to know what would be the next auto increment id in mysql? [duplicate]如何知道 mysql 中的下一个自动增量 ID 是什么? [复制] 【发布时间】:2016-03-31 23:10:35 【问题描述】:

假设我有这样一张桌子:

----Id-------Data---
|   1   |   Data1   |
--------------------
|   2   |   Data2   |
--------------------
|   3   |   Data3   |
--------------------

如果我运行这个查询

从表中选择 MAX(id)

它将显示结果 3,如果我用 1 递增它,通常这将是下一个自动递增的 id。

如果我删除记录 其中 id 为 3,然后当我再次运行此查询时意味着

从表中选择 MAX(id)

它将显示 2,如果我用 1 递增它,那么它将是 3。现在,如果我插入一条新记录,自动增量 ID 将为 4

现在我的问题是如何知道下一个确切的自动增量 ID 是什么?

【问题讨论】:

【参考方案1】:

要知道下一个自动递增的值,您必须使用 information_schema.TABLES 表。

试试这个:

SELECT T.AUTO_INCREMENT 
FROM information_schema.TABLES T 
WHERE T.TABLE_SCHEMA = 'YourDBName' 
  AND T.TABLE_NAME = 'YourTableName';

【讨论】:

@AshisBiswas 不客气... @AshisBiswas:是的,但是除非你能保证没有其他连接到数据库,否则这个值可能会在你使用之前改变。这是一种不好的做事方式,如果您解释为什么您认为需要这样做,那么我相信我们可以帮助您以更好的方式 您为什么需要这样做?答:你不会。 @Borodin 我想把它用于this purpose @AshisBiswas:好的,这不会生成一个远程随机的数字。事实上,大多数时候它只会在行 ID 中添加一个。它使用的是 last 行 ID,而不是 next 行 ID,正如您在此处询问的那样【参考方案2】:

使用 LAST_INSERTED_ID 作为 SELECT LAST_INSERT_ID();

【讨论】:

感谢您的回答。但我认为这并不完美。 只有在插入记录后才会生效。删除记录后将无法使用 虽然这不是问题的正确答案,但可能是解决背后问题的正确方法。

以上是关于如何知道 mysql 中的下一个自动增量 ID 是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我应该为我的自动增量 ID MySQL 使用啥大小的 INT

如何避免将表单发送的数据关联到具有自动增量唯一 ID 的 MySQL 数据库中的可能冲突?

休眠(mysql)刷新与提交中的自动增量

如何更改 MySQL 中的自动增量计数器?

Java和mySQL DB中的自动增量ID字段?

dbwritetable 删除 mysql 中的自动增量字段