2013-07-11 79 views
4

是否有可能以刪除表中的全部數據,並與編號從1插入新行ID 1

開始刪除命令有助於從表中刪除數據時,我們試圖插入新行插入新行是ID將是最後插入的行ID + 1(如果最後插入的ID是5,然後新的ID應該是6),但我想這個ID存儲爲1

比截斷命令其他任何建議,提前感謝

+0

你能分享「TRUNCATE」有什麼問題嗎? – peterm

回答

7

刪除全部記錄後做

ALTER TABLE tablename AUTO_INCREMENT = 1 

注意

從MySQL文檔Link

你不能計數器復位爲小於或等於任何 已經使用的值。對於MyISAM,如果該值小於或等於 到當前在AUTO_INCREMENT列中的最大值,則將值 重置爲當前最大值加1。對於InnoDB,如果值爲 小於列中的當前最大值,則不會發生錯誤,並且當前序列值不會更改。

+0

+1注意.... – Bhushan

+0

感謝您的回覆mhasan其工作正常 – Satish

0

如果使用TRUNCATE命令,將刪除所有行和重置自動增量值:

TRUNCATE tablename; 
1

使用此 TRUNCATE TABLE表名重置自動增量值:

0

你會需要執行以下sequence中的兩個命令:

首先刪除表中的所有數據

delete TABLE_NAME 

然後將ID設置爲1

insert into TABLE_NAME(ID) values(1) 
1

我從你的描述推測,即 「ID」 是標識列?

在這種情況下,

TRUNCATE TABLE tablename; 

既刪除所有行,並重置標識字段從1再次填充。

+0

爲什麼downvote?我的回答完全正確。 –

+2

我沒有downvote,但downvote可能是因爲OP明確要求除TRUNCATE以外的解決方案。儘管如此,TRUNCATE是一個更好的解決方案。 –

0

由於@mhasan回答

ALTER TABLE `tablename` AUTO_INCREMENT = 1 

一種方法可以做到這一點。

另一種方法是刪除id列並重新創建它。

ALTER TABLE `tablename` DROP `id`; 
ALTER TABLE `tablename` AUTO_INCREMENT = 1; 
ALTER TABLE `tablename` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 

但是,如果你的表與其他表有關係,你的意志不是一個好的解決方案。