我们知道在 MySQL 中创建表时可以使用?auto_increment
?关键字来表示自增序列,例如:
use test; | |
create tb_incre1 ( | |
id int not null auto_increment primary key, | |
name varchar(10) not null default 'xxx' | |
); |
该自增选项默认开始于?1
,每次插入时步进序列也为?1
参考官方文档:?MySQL :: MySQL 8.0 Reference Manual :: 3.6.9 Using AUTO_INCREMENT
除了使用?auto_increment
?作为自动增加的序列外,还可以指定自增序列的起始值、步进长度。
例如,我不希望MySQL中的初始值为1、我想让每次插入时的步长为5。此时可以使用全局变量?@@auto_increment_increment
和@@auto_increment_offset
来实现。
简单来说:
@@auto_increment_increment
?用来指定每次插入时前进的步长,例如每次增加5@@auto_increment_offset
?用来指定初始值是多少,它应该小于步长,否则会被忽略create database db1; | |
use db1; | |
create table t1 ( | |
id int not null auto_increment primary key, | |
name varchar(20) not null default '' | |
); | |
set @@global.auto_increment_increment=3; |
mysql> insert into t1 (name) values ('zhangsan'); | |
Query OK, 1 row affected (0.00 sec) | |
mysql> insert into t1 (name) values ('zhangsan1'); | |
Query OK, 1 row affected (0.00 sec) | |
mysql> insert into t1 (name) values ('zhangsan2'); | |
Query OK, 1 row affected (0.00 sec) | |
mysql> insert into t1 (name) values ('zhangsan3'); | |
Query OK, 1 row affected (0.00 sec) | |
mysql> insert into t1 (name) values ('zhangsan4'); | |
Query OK, 1 row affected (0.00 sec) | |
mysql> select * from t1; | |
+----+-----------+ | |
| id | name | | |
+----+-----------+ | |
| 2 | zhangsan | | |
| 5 | zhangsan1 | | |
| 8 | zhangsan2 | | |
| 11 | zhangsan3 | | |
| 14 | zhangsan4 | | |
+----+-----------+ | |
5 rows in set (0.00 sec) | |
mysql> |