如何再次从1开始更新id列

时间:2014-03-18 19:01:39

标签: php mysql

我有问题从1,2,3,4,5开始再次更新ID号列表。因为我在测试sql命令时删除了少量记录。能否请你从1开始重新制作这个id列。

我可以只输入身份证号码的名称,但是如果我这样做,那么当我输入新记录时,它将再次从之前的66号码开始。

ID    Name 

1   A

32  B

34  C

35  D

55  E

66  F

4 个答案:

答案 0 :(得分:0)

首先截断你的表,然后执行这个

   ALTER TABLE tablename AUTO_INCREMENT = 1

答案 1 :(得分:0)

您应该截断表格以正确重新设置它,而不仅仅是使用alter table

答案 2 :(得分:0)

(tldr;通常最好不要担心自动增量列的密度或连续顺序。)

1 1 使用AUTO_INCREMENT自动填写小于MAX(ID)的值。

但是,如果现有ID已更新,则可以重置自动增量ID。压缩阶段是必需的,因为MySQL does not allow "filling in gaps" via an auto-increment column

  1. Compact the existing IDs,如下:

    SET @i := 0;
    UPDATE t id = @i := (@i+1)
    

    重要事项:确保在完成之前以CASCADE ON UPDATE 的外键关系形式识别所有关系用法,否则数据可能会不可逆转地损坏。

  2. 压缩后,将自动ID分配给最大 1 ID值:

    ALTER TABLE t AUTO_INCREMENT = (SELECT MAX(id) FROM t)
    

  3. 1 根据ALTER TABLE中的AUTO_INCREMENT文档:

      

    您无法将计数器重置为小于或等于当前正在使用的值的值。如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前值最大AUTO_INCREMENT列值加一。

    该规则意味着无法将增量ID lower 设置为已使用的ID;此外,手动分配更高的值将自动提高 AUTO_INCREMENT值。

答案 3 :(得分:0)

最简单(也是最快)的方法是删除列并将其添加回来。更新列可能会搞砸索引或弄乱值。放下整张桌子毫无意义。但请记住,如果其他列引用了这些ID,则可能会损坏您的应用。