2013-07-11 53 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; 

但是,如果你的表与其他表有关系,你的意志不是一个好的解决方案。