【问题标题】: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 是什么?

【问题讨论】:

    标签: mysql sql select auto-increment


    【解决方案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();

    【讨论】:

    • 感谢您的回答。但我认为这并不完美。
    • 只有在插入记录后才会生效。删除记录后将无法使用
    • 虽然这不是问题的正确答案,但可能是解决背后问题的正确方法。
    猜你喜欢
    • 2013-04-10
    • 2012-12-22
    • 2011-10-09
    • 1970-01-01
    • 2015-10-05
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多