MySQL社区

标题: 重置自增列(自动增长) AUTO_INCREMENT 初时值 [打印本页]

作者: admin    时间: 2007-7-20 18:07
标题: 重置自增列(自动增长) AUTO_INCREMENT 初时值
发表者 kider

方法一:
delete from tb1;
ALTER TABLE tbl AUTO_INCREMENT = 100;
(好处,可以设置AUTO_INCREMENT 为任意值开始)
提示:如果表列和数据很多,速度会很慢,如90多万条,会在10分钟以上。


方法二:
truncate tb1;
(好处,简单,AUTO_INCREMENT 值重新开始计数)
作者: kider    时间: 2008-7-10 16:12
体别提醒:

在MySQL4.1及以前的版本中,重置自增列(自动增长) AUTO_INCREMENT 初时值只能用在MyISAM表中,而InnoDB表不可以。

MySQL5.0以后版本中则可以了....

注释:有时候,每个表只有一个AUTO_INCREMENT列,此列必须编制索引,不能有DEFAULT值。一个AUTO_INCREMENT列只有在只包含正数的情况下,才能运行正常。插入一个负数会被认为是插入了一个非常大的正数。这样做是为了避免当数字由正数转为负数时出现精度问题,同时也为了确保AUTO_INCREMENT列中不会包含0。

对于MyISAM和BDB表,您可以在一个多列关键字中指定一个AUTO_INCREMENT次级列。

(there can be only one auto column and it must be defined as a key...)
作者: edwin_chen    时间: 2008-7-22 13:41
友情提示:

Mysql的自增列有个特点需要注意一下, 自增列的最大值是保存在内存中的, 每次mysql启动时会根据每个表的最大id 计算自增列的初始值. 因此 在下面的情况中,会出现问题.

步骤:
1. 表A, id列自增,主键.
2. insert 3条记录
3. 删除id=3的记录
4.重启mysql
5.insert第4条记录, 发现id还是3. (因此重启后最大id为2)

提醒大家使用时注意.
作者: mysqlkumao    时间: 2008-8-28 12:48





欢迎光临 MySQL社区 (http://www.mysqlpub.com/) Powered by Discuz! X3.2