hom*_*rrr 1174 mysql sql auto-increment
我怎样才能重新在AUTO_INCREMENT
一个领域?我希望它1
再次开始计数.
Nie*_*els 1903
您可以使用以下命令重置计数器
ALTER TABLE tablename AUTO_INCREMENT = 1
Run Code Online (Sandbox Code Playgroud)
对于InnoDB,您无法将该auto_increment
值设置为低于或等于当前最高索引.(引自ViralPatel):
请注意,您不能将计数器重置为小于或等于任何已使用的值.对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前最大值加1.对于InnoDB,如果该值小于列中的当前最大值,则不会发生错误,并且不会更改当前序列值.
请参阅如何使用另一个表中的MAX值重置MySQL AutoIncrement?关于如何动态获得可接受的值.
boo*_*biq 148
ALTER TABLE tablename AUTO_INCREMENT = 1
Run Code Online (Sandbox Code Playgroud)
ngh*_*pit 73
SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;
Run Code Online (Sandbox Code Playgroud)
我想这会做到的
fyr*_*fyr 55
就像这样:
ALTER TABLE tablename AUTO_INCREMENT = value;
Run Code Online (Sandbox Code Playgroud)
参考:http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
tru*_*rds 34
对我有用的最佳解决方案:
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED;
COMMIT;
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT;
COMMIT;
Run Code Online (Sandbox Code Playgroud)
它速度快,适用于innoDB,我不需要知道当前的最大值!这样,自动增量计数器将重置,它将从存在的最大值自动启动.
小智 19
在如何重置MySQL自动增量列中给出了很好的选项
请注意,ALTER TABLE tablename AUTO_INCREMENT = value;
并没有对InnoDB的工作
lre*_*der 19
这个问题的最高评分答案都建议"ALTER yourtable AUTO_INCREMENT = value".但是,这仅value
在alter大于自动增量列的当前最大值时才有效. 根据MySQL文档:
您不能将计数器重置为小于或等于任何已使用的值.对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前最大值加1.对于InnoDB,您可以使用ALTER TABLE ... AUTO_INCREMENT =从MySQL 5.0.3开始的值,但如果该值小于列中的当前最大值,则不会发生错误,并且不会更改当前序列值.
实质上,您只能改变AUTO_INCREMENT以增加自动增量列的值,而不是将其重置为1,因为OP在问题的第二部分中提出了问题.对于实际允许您将AUTO_INCREMENT从其当前最大值向下设置的选项,请查看重新排序/重置自动增量主键.
Sea*_*anN 18
添加更新,因为MySQL 5.6中的功能已更改.从MySQL 5.6开始,您可以使用带InnoDB的简单ALTER TABLE:
ALTER TABLE tablename AUTO_INCREMENT = 1;
Run Code Online (Sandbox Code Playgroud)
更新文档以反映这一点:
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
我的测试还显示表没有被复制,只是改变了值.
Ali*_*van 12
ALTER TABLE news_feed DROP id
ALTER TABLE news_feed ADD id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)
Run Code Online (Sandbox Code Playgroud)
我在我的一些脚本中使用了这个,id字段被droped然后添加回以前的设置,数据库表中的所有现有字段都填入了新的自动增量值,这也适用于InnoDB.
请注意,表中的所有字段都将被重新计算,并且将包含其他ID !!!
Man*_*mar 12
您还可以使用如下语法TRUNCATE
表:
TRUNCATE TABLE table_name
谨防!! TRUNCATE TABLE your_table
将删除你的一切your_table
!!
小智 10
更新到最新的加一id:
ALTER TABLE table_name AUTO_INCREMENT =
(SELECT (id+1) id FROM table_name order by id desc limit 1);
Run Code Online (Sandbox Code Playgroud)
编辑:
SET @latestId = SELECT MAX(id) FROM table_name;
SET @nextId = @latestId + 1;
ALTER TABLE table_name AUTO_INCREMENT = @nextId;
Run Code Online (Sandbox Code Playgroud)
未经测试,请在运行前测试*
SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;
Run Code Online (Sandbox Code Playgroud)
它用于空表:
ALTER TABLE `table_name` AUTO_INCREMENT = 1;
Run Code Online (Sandbox Code Playgroud)
如果您有数据但想要整理一下,我建议使用此方法:
ALTER TABLE `table_name` DROP `auto_colmn`;
ALTER TABLE `table_name` ADD `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`);
Run Code Online (Sandbox Code Playgroud)
这是我的解决方案,但如果您的列有约束或作为外键连接到其他表,我不建议这样做,因为它会产生不良影响甚至不起作用。
ALTER TABLE tbl_name DROP COLUMN column_id
Run Code Online (Sandbox Code Playgroud)
ALTER TABLE tbl_access ADD COLUMN `access_id` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST
Run Code Online (Sandbox Code Playgroud)
这很好用!
归档时间: |
|
查看次数: |
1179420 次 |
最近记录: |