MySQL Reset Auto Increment Number

Posted by – July 3, 2011

Database 裡在開新 table 時,常會使用俱有自動增值屬性 (auto increment) 的欄位來當 primary key,而常見的命名也不外乎是 ID 或是 post_id 之類的。每當插入一筆新資料,ID 就會自動加一,是很方便的功能。不過在刪除資料時,ID 值並不會重設,留下很多空的序列,像是 1, 2, 4, 7, 12 這樣,尤其是系統開發階段更是如此。

除了將 table 刪除,重匯資料以外,MySQL 官網上也有提到如何重設 auto-increment 的指標值。只要輸入下列 query 就能指定指標值:

ALTER TABLE tbl AUTO_INCREMENT = 1;

當然數字可以依需求更改。

若是要在插入資料時就指定數值,要輸入下列 query:

SET insert_id = 40;
INSERT INTO tbl VALUES ('blah', '...');

馬上接著的 insert into 就會是指定的 ID 值了,這個語法是一次性的,並不會影響其他插入的資料。

或是先入插入資料,再用 UPDATE 也可以更改 ID 值。

INSERT INTO tbl VALUES ('blah', '...');
UPDATE tbl SET id = 40;

若是需要知道最後一筆新資料的 ID 值,可以用以下 query:

SELECT LAST_INSERT_ID();

 

References:

Leave a Reply

Your email address will not be published. Required fields are marked *