官方文档如下:http://dev.mysql.com/doc/refman/5.6/en/innodb-auto-increment-handling.html
简单记录下:
- 在InnoDB中使用AUTO_INCREMENT机制必须要对相应的列建立索引,用于解决查询最大值问题
- AUTO_INCREMENT的计数器存放于内存中,而非硬盘
- 当表在服务器启动后第一次插入数据时,MySQL会先执行一次“select max(ai_col) from table for update;”用于初始化AUTO_INCREMENT。ai_col指代AUTO_INCREMENT对应的列,该方案能解决第2点未存盘的弊端
- 默认步长为1,可以通过配置auto_increment_increment参数配置步长
- 如果表空表,则计数器值默认为1。可以通过配置auto_increment_offset参数修改
- 如果所在的列,存在比计数器当前计数更大的值,则计数器会更新为当前最大值+步长(默认1)的值
- 如果AUTO_CREAMENT对应的列,在插入数据时,值为0或者NULL时,InnoDB会使用计数器中的值替代
- AUTO_CREAMENT所在列,不能为负数,同时不能超过Integer的最大值
- 使用AUTO_CREMENT时,会锁表。该锁只持续到计数器分配完成值,而不是持续到整条SQL的事务完成
相关推荐
- **InnoDB**:InnoDB也是MySQL中常用的存储引擎,同样支持`AUTO_INCREMENT`特性。它提供了事务、行级锁等功能,使得它在需要高并发处理的环境中非常受欢迎。 - **HEAP/BDB**:这两个存储引擎也支持`AUTO_INCREMENT`...
- `auto_increment_increment`:定义了自增字段每次递增的步长,默认值为1,即每次递增1。 - `auto_increment_offset`:设置了自增字段的初始值,默认也为1。这意味着第一条记录的自增ID将是1。 2. **设置自增...
在InnoDB存储引擎中,auto_increment的值被存储在内存中的一个计数器中。每当向表中插入一条新记录时,这个计数器就会被增加。如果在插入操作完成之前发生意外的数据库重启,内存中的计数器可能会丢失,导致ID值的不...
1. **自增ID的存储类型**:通常,`auto_increment`字段是整数类型(如`INT`或`BIGINT`),根据业务需求选择合适的范围。 2. **自增ID的递增策略**:默认情况下,每次插入新行时,`auto_increment`会递增1,但可以...
在之前得文章中我们说过,如果使用delete对数据库中得表进行删除,那么只是把记录删除掉,并且id的值...create table t4(id int auto_increment primary key, num int) engine=innodb default charset=utf8; 那么接下
创建表的字段如下,有需要再下载。 CREATE TABLE `region` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '表id', `name` varchar(32) ...) ENGINE=InnoDB AUTO_INCREMENT=12120 DEFAULT CHARSET=gbk;
数据库字段如下 CREATE TABLE `phone` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `pref` varchar(10) DEFAULT NULL COMMENT '手机号前三位'...) ENGINE=InnoDB AUTO_INCREMENT=387892 DEFAULT CHARSET=utf8;
) ENGINE=InnoDB AUTO_INCREMENT=243 DE 在踩完所有的收费、免费、关注公众号等手段后,一怒之下,自行整理,其中痛苦,懂得都懂,目前的结构是我当前的需求,分享出来,希望能帮助大家,省去一些数据整理的时间,...
在MySQL数据库中,自增字段(AUTO_INCREMENT)是一种常见的特性,用于在插入新记录时自动为该字段生成唯一的序列编号。这个字段通常用于主键,确保每个记录的唯一性。以下是对MySQL自增字段相关知识点的详细说明: ...
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; INSERT INTO `resource` (`resource_id`, `name`, `url`) VALUES (1, 'common_index', '/myPage/myPage.jsp'), (2, 'admin_index', '/admin/admin.jsp'); ...
在MySQL中,我们通常使用`AUTO_INCREMENT`关键字来创建自增字段,例如创建一个表runoob_tbl: ```sql CREATE TABLE IF NOT EXISTS `runoob_tbl`( `runoob_id` INT UNSIGNED AUTO_INCREMENT, `runoob_title` ...
在InnoDB中,AUTO_INCREMENT可以确保每个插入的行都有一个唯一的ID,而MyISAM则需要手动设置AUTO_INCREMENT的值。 删除数据 InnoDB和MyISAM在删除数据方面也有所不同。在InnoDB中,使用DELETE FROM table可以快速地...
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; ``` - **字段解析**: - `inter_id`:主键,自动递增的大整型(`bigint`)字段,用于唯一标识每条记录。 - `description`:非空的字符串类型(`...
要重置自增字段的起始值,可以在创建表时使用`AUTO_INCREMENT=n`选项,或者使用`ALTER TABLE table_name AUTO_INCREMENT=n`命令。例如,如果你想要自增字段从10开始,你可以执行`ALTER TABLE table_name AUTO_...
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; ``` 这个`t_article`表有三个字段:`id`作为主键,自动递增且不可为空;`title`存储文章标题,允许为空;`content`存储文章内容,使用`longtext`类型可以...
对于自增主键的分配规则是由 InnoDB 数据字典内部一个计数器来决定的,而该计数器维护在了内存中,并不会持久化到磁盘中,此时硬盘中并无数据,当数据库重启的时候,该计数器会被初始化为: auto_increment = max...
数据库配置: 1.手动创建数据库“管理系统” ...实际操作过程中发现,直接运行整个代码会出错,所以在创建表时去掉“)”后的ENGINE=InnoDB AUTO_INCREMENT=201181110151 DEFAULT CHARSET=gb2312 ROW_FORMAT=FIXED;字段
2. **auto_increment_increment**:它定义了自增长字段每次递增的量,默认是1,同样在1到65535之间。在主主复制配置中,这个设置确保了不同服务器上的自增序列不会重叠。 3. **autocommit**:这个变量控制事务的...
使用CREATE TABLE语句创建表,例如CREATE TABLE student(sid INT NOT NULL AUTO_INCREMENT,name VARCHAR(20),age INT NOT NULL,PRIMARY KEY(sid),UNIQUE KEY name(name))ENGINE=InnoDB AUTO_INCREMENT=4...