Fork me on GitHub

MySQL非主键自增

MySQL中,一张表只能有一个自增,但不一定是主键自增。

首先创建一个测试表。

1
2
3
4
5
create table test(
id int(11) primary key,
sid int(11) not null auto_increment,
name varchar(30) not null,
key(sid));

1
接着插入一条语句。

1
insert into test(id, name) values(1, 'a');

2
发现sid非主键自增。

原理:
3
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
意思大义是:只能有一个自动列,并且必须被定义为键(key)。
翻译成白话文就是说,普通列是没办法创建自增长的。

结论: MySQL中的每张表只能设置一个字段为自增长,这个字段可以是非主键,但必须是一种键(key)。

Your support will encourage me to continue to create!