mysql自动增长(auto_increment)约束问题

Mr.王征 项目总监  2017-09-27 09:08:40
请问下面俩个个sql语句那个正确,为什么?
1,mysql> create table a1(id int primary key auto_increment,name text);
2,mysql> create table a2(id int auto_increment,name text);


当我的想要自动增长的字段添加主键约束之后,则可以编译成功
mysql> create table a1(id int primary key auto_increment,name text);
Query OK, 0 rows affected (0.01 sec)


当该字段没有添加主键约束,直接自增长则会出现错误
mysql> create table a2(id int auto_increment,name text);
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key(想要自动增长必须给他一个键(key))
...全文
329 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
字段使用auto_increment来设置自增时,这个字段必须创建索引,如果没有创建索引,创建数据表则就会报错。但是在MySQL中,primary key即主键约束,会默认创建一个唯一索引,默认名为primary.所以,auto_increment与primary ke一起使用是,不需要再创建索引就能成功的创建数据表了。如果要想使,mysql> create table a2(id int auto_increment,name text);能够成功创建数据表,添加索引即可,在下面我添加一个普通索引:
create table a2(id int auto_increment,name text,index(id));这样添加后就能够成功创建数据表了//因为字段id中使用了auto_increment属性,所以要创建这个字段的索引。至于索引的类型,在这就不作讲解了
回复
二月十六 2017-09-27
第一个正确。如果想让自增长的列不是主键,可以设置随意一个键就可以。
create table tab_01(
id int auto_increment not null,
test varchar(10),
key(id)
)
回复
qq_37358669 2017-09-27
第一条创建语句是对的
回复
这应该是为了能让自增列不重复,且速度快,才 要求强制使用一个key,说白了就是要求用索引
回复
发动态
发帖子
MySQL
创建于2007-09-28

5.4w+

社区成员

MySQL相关内容讨论专区
申请成为版主
社区公告
暂无公告