【问题标题】:How to reset the auto increment number/column in a MySql table如何重置 MySql 表中的自动递增数/列
【发布时间】:2012-05-28 15:48:27
【问题描述】:

item_category_id 列是 mysql 表中的自动递增值。

我需要删除所有值,下一次插入应该从 1 开始。如果我删除所有值并尝试插入新行,那么它会从 30 和 40 开始。

  item_category_id  item_category_name
    1                     qqq
    25                    ccc
    32                    vvv
    29                    bb
    4                     bbb
    31                    hhh
    34                    mmm
    33                    rrr

【问题讨论】:

    标签: mysql sql


    【解决方案1】:
    ALTER TABLE TABLENAME AUTO_INCREMENT = 1
    

    如果您使用 Truncate 将删除数据并重置自动增量,而不是使用 Delete。

    TRUNCATE TABLE TABLENAME
    

    【讨论】:

    • 除非有外键,否则需要在截断前加SET FOREIGN_KEY_CHECKS = 0;,后加SET FOREIGN_KEY_CHECKS = 1;
    【解决方案2】:

    如果你使用 PHPmyAdmin 来管理你的数据库,你可以简单地

    • 选择YOUR_TABLE
    • 导航到More
    • 然后,导航到Operations
    • 您会在此处找到可以更改的 AUTO_INCREMENT 字段:

    【讨论】:

      【解决方案3】:

      Reset the auto increment value for a MySQL table

      ALTER TABLE `users` AUTO_INCREMENT = 1;
      

      【讨论】:

        【解决方案4】:
        SET  @num := 0;
        
        UPDATE your_table SET id = @num := (@num+1);
        
        ALTER TABLE your_table AUTO_INCREMENT =1;
        

        我觉得这样就可以了

        【讨论】:

        • 我同意你的回答,但我不同意最后的 alter 陈述。假设您有 1000 条记录,您的更新语句将在技术上将 id 值重置为从 1 到 1000。之后将 AUTO_INCREMENT 值设置回 1 没有意义,而应该是 1001。这有意义吗?更改应该类似于: ALTER TABLE your_table AUTO_INCREMENT = ((SELECT MAX(id) FROM your_table)+1);
        猜你喜欢
        • 2012-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-25
        • 2014-10-01
        • 1970-01-01
        • 2016-03-07
        • 1970-01-01
        相关资源
        最近更新 更多