mysql怎么自增长 mysql设置自增长

2020-01-16 控制MYSQL的自增长序列的起始值一、修改自增长序列的值
alter table table_name auto_increment=n;
注意:n只能大于已有的auto_increment的整数值,小于的值无效.
show table status like 'table_name' 的返回结果里的auto_increment列就是表的现有值.
二、控制主键的起点
create table 表名
(
......
) engine=INNODB auto_increment=1001 default charset=gbk;
三、自增主键归零
如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数
truncate table 表名
四、获取自增主键
通过SQLselect LAST_INSERT_ID()函数
通过SQL @@IDENTITY 变量
五、说明
AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复 。
AUTO_INCREMENT数据列必须具备NOT NULL属性 。
设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍 。
mysql自增ID跳跃增长#1、查看现在mysql自增id的配置
show variables like '%increment%';
#2、下面步长为2的增长
+-------------------------------+-------+
| Variable_name| Value |
+-------------------------------+-------+
| auto_increment_increment| 2|
| auto_increment_offset| 1|
| div_precision_increment| 4|
| innodb_autoextend_increment| 8|
| ndb_autoincrement_prefetch_sz | 32|
+-------------------------------+-------+
5 rows in set (0.01 sec)
#3、解决
set auto_increment_increment = 1和set @@auto_increment_increment = 1
如果想永久性的改回为1,在my.cnf or my.ini中查找这个field,然后修改 , 然后restart mysql.
一文让你彻底弄懂MySQL自增列MYSQL的自增列在实际生产中应用的非常广泛 , 相信各位所在的公司or团队,MYSQL开发规范中一定会有要求尽量使用自增列去充当表的主键,为什么DBA会有这样的要求,各位在使用MYSQL自增列时遇到过哪些问题?这些问题是由什么原因造成的呢?本文由浅入深,带领大家彻底弄懂MYSQL的自增机制 。
1.通过auto_increment关键字来指定自增的列,并指定自增列的初始值为1 。
[root@localhost][test1]Create table t(id int auto_increment ,namevarchar(10),primary key(id))auto_increment=1;
QueryOK, 0 rows affected (0.63 sec)
2.自增列上必须有索引,将t表的主键索引删除掉,会报错
[root@localhost][test1]alter table t drop primary key;
ERROR1075 (42000): Incorrect table definition; there can be only one auto column andit must be defined as a key
3.设定auto_increment_increment参数,可以调整自增步长,该参数有session级跟global级,在分库分表以及双主or多主的模式下比较有用 。
4.一个表上只能有一个自增列
5.Mysql5.7及以下版本,innodb表的自增值保存在内存中 , 重启后表的自增值会设为max(id)+1 , 而myisam引擎的自增值是保存在文件中,重启不会丢失 。Mysql8.0开始,innodb的自增id能持久化了,重启mysql,自增ID不会丢 。
首先:表中自增列的上限是根据自增列的字段类型来定的 。
若设定了自增id充当主键 , 当达到了自增id的上限值时,会发生什么样的事情呢?还是以上面创建的 t表为例, 先回顾它的表结构:
CREATETABLE `t` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) COLLATE utf8mb4_binDEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
无符号的int类型,上限是2147483647 。这里我们将表的自增值设为2147483647,再插入两行数据:
[root@localhost][test1]alter table t auto_increment=2147483647;

推荐阅读