如何重置MySQL的自动增量列
在使用MYSQL数据库时,无法设置AUTO_INCREMENT从0开始自增,之后查询了相关资料整理。
cretae table myisamdemo(
id int unsigned not null auto_increment,
primary key(id)
)engine=MyISAM auto_increment=100;
alter table myisamdemo AUTO_INCREMENT=1001;
在mysql中对于设置了自增属性auto_increment的字段自增值是从1开始的,写入0会被当做null值处理从而写入当前最大值的下一个值(即表示定义中auto_increment的值)。
如果需要修改自增值的起始位置可以通过 " alter table table_name(表名)
auto_increment=xxxx;
"进行修改,但是这个值必须比当前表内数据的最大值要大,否则修改不会生效。
如果需要修改自增值从0开始而不是从1开始,可以设置线程级别的参数" set
sql_mode='NO_AUTO_VALUE_ON_ZERO' ; "来实现 ( 可小写 )
例如 :
创建表时可以这样写:
set sql_mode='no_auto_value_on_zero';
CREATE TABLE auth_function (
id BIGINT(20) AUTO_INCREMENT NOT NULL,
name varchar(64) NOT NULL,
parent_id BIGINT(20) NOT NULL,
url varchar(128) NOT NULL,
serial_num int NOT NULL,
accordion int NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MySQL数据库提供了一个奇妙的功能AUTOINCREMENT列指数。你的数据库表可以定义为数字自动递增的主键,MySQL将采取照顾其独特的价值,同时插入新行。
www.2cto.com
每次添加一个新行,MySQL的增量值自动,它坚持以表。但有时你可能需要重置AUTOINCREMENT列值1。说你写一个示例应用程序,你已经有几行插入表中。现在要删除这些行,并自动增量列复位,使新行插入将有主键的值1 1。
有几个方法来实现这一点。
1。直接复位自动增量值
ALTER TABLE语法提供了一种方法来重新设置自动增量列。采取看看下面的例子。
ALTER TABLE table_name AUTO_INCREMENT = 1;
请注意,你不能重置计数器的值小于或等于任何已使用的。对于MyISAM,如果该值小于或等于目前在AUTO_INCREMENT列的最大值,该值是目前最大的加一复位。对于InnoDB,如果该值大于当前列中的最大值,没有出现错误和不改变当前序列值。
2。截断表
本文由宝马娱乐在线发布于网络频道,转载请注明出处:如何重置MySQL的自动增量列