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))
...全文
733 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
字段使用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,说白了就是要求用索引

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧