MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 11798|回复: 4
打印 上一主题 下一主题

[例子类] 重置自增列(自动增长) AUTO_INCREMENT 初时值

[复制链接]
跳转到指定楼层
1#
发表于 2007-7-20 18:07:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发表者 kider

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


方法二:
truncate tb1;
(好处,简单,AUTO_INCREMENT 值重新开始计数)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享淘帖 顶 踩
2#
发表于 2008-7-10 16:12:41 | 只看该作者
体别提醒:

在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...)
3#
发表于 2008-7-22 13:41:18 | 只看该作者
友情提示:

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

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

提醒大家使用时注意.
4#
发表于 2008-8-28 12:48:55 | 只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-4-27 00:25 , Processed in 0.068273 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表