当前第2页 返回上一页
3 其他情况
上面那是正常情况下的取值,下面我们探讨一种特殊情况
3.1 根据分组自增长
有一种特殊情况会造成自增长字段可能不会自增长, 就是当使用 MyISAM引擎,且使用了联合索引,自增字段为非联合索引首个字段。
这种情况下,自增字段取值为MAX(auto_increment_column) + auto_increment_offset WHERE prefix=given-prefix, 怎么理解,就是计算增长值的时候,对联合索引自增长字段前面字段做一个分组,在该分组内做一个独立的增长计算。
例如对a,b,c做了联合索引,c是自增字段,那么对where a=xx and b=xx这个条件下的数据做独立的增长计算。下面是实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | db83-3306>>CREATE TABLE user_pets (
-> name varchar(16) NOT NULL,
-> id_inc INT NOT NULL AUTO_INCREMENT,
-> pets varchar(16) NOT NULL,
-> PRIMARY KEY (name, id_inc)
-> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.00 sec)
db83-3306>>INSERT INTO user_pets(name, pets) VALUES
-> ( 'chengqm' , 'dog' ),
-> ( 'chengqm' , 'cat' ),
-> ( 'chengqm' , 'fish' ),
-> ( 'yexm' , 'dog' ),
-> ( 'yexm' , 'cat' ),
-> ( 'yexm' , 'fish' );
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
db83-3306>>SELECT * FROM user_pets;
+---------+--------+------+
| name | id_inc | pets |
+---------+--------+------+
| chengqm | 1 | dog |
| chengqm | 11 | cat |
| chengqm | 21 | fish |
| yexm | 1 | dog |
| yexm | 11 | cat |
| yexm | 21 | fish |
+---------+--------+------+
6 rows in set (0.00 sec)
|
从结果可以看出,在name
字段相同的字段内,会有独立的自增长计算,这种计算方式在做group by
的时候非常方便。
以上就是MySQL自增字段取值的详细介绍(附代码)的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
在linux系统上构建mysql服务器
mysql支持分布式吗
navicat数据库怎么筛选查询某一个字段
在sql的select语句中用于实现选择运算的是什么
mysql中怎么删除数据库
mysql与php的基础与应用专题之创建数据库表
外键ddl在oracle运行正常,在mysql报异常以及解决方案
mysql多层级结构-树搜索介绍
mysql分片分区分库分表
mysql proxy的意思是什么
更多相关阅读请进入《数据库》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » MySQL自增字段取值的详细介绍(附代码)