mysql数据库怎么让id自动增长,但ID不是主键。难道只有ID为主键时,才可以自增的么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库怎么让id自动增长,但ID不是主键。难道只有ID为主键时,才可以自增的么?相关的知识,希望对你有一定的参考价值。

从零蛋娃娃的回复中得到启示,解决问题。

重新表述需求: id自增长,同时需要一个键uniquekey是唯一键。

解决方法就是:

    把id在索引中设置索引类型为任意一个类型,比如normal,然后unique就可以设置为主键了。

    或者反过来,id自增长,同时作为主键。 uniquekey在索引中索引类型设置为unique即可。 

补充:考虑到主键能设置成外键,所以建议用以上第一种方式。

参考技术A 主键只是约束,并不是自动增量的唯一功能。
同意楼上的答复,可以设为非空。
例:id int(11) not null auto_increment primary key 这样才是把它设为主键。.
参考技术B 把字段设置成 AUTO_INCREMENT 就可以实现自增了,自增字段可以是非主键字段,但是一张表只能有一个字段是自增的 参考技术C

不是,只要是int类型的,都可以设置成自增。

你用 Navicat  试试

参考技术D 你设置id值非空,并且自增长就行了啊,也就是 not null 和 autoincrement
希望可以帮到您,谢谢!

mysql 的表已经存在,但是我现在想添加一列 自动增长列

表里面有十几条记录了 表名 temp 列名id 要求是mysql的写法 添加数据进去id列自动增长

参考技术A alter table temp change id id int primary key auto_increment; ---------------------------id不是主键的情况下,

如果id已经是主键,alter table temp change id id int auto_increment;
参考技术B alter table temp
add id int primary key auto_increment first;
新建的字段,肯定是没有设置过主键的。add语句就可以解决。既然是id,所以建议放在第一列,因此最后可加first。
参考技术C 办法是,创建一个带有id的新表,id是自动增长的,temp1,其余字段和temp表相同,
将temp表数据插入到temp1.

insert into temp1 select * from temp追问

假设我原来表有 字段 name age sex 这是三个字段 三个都是 字符型 那我创建新表的代码是怎么样的

追答

create table temp1
(
id int(10) unsigned NOT NULL AUTO_INCREMENT,
name varchar(20) not null,
sex char(2) not null,
age int not null,
primary key(id)
);

本回答被提问者采纳

以上是关于mysql数据库怎么让id自动增长,但ID不是主键。难道只有ID为主键时,才可以自增的么?的主要内容,如果未能解决你的问题,请参考以下文章

mysql表主键从给定值开始自动增长是怎么回事?

mysql表主键从给定值开始自动增长是怎么回事?

mysql的主键是自动增长的,oracle的主键是起啥作用的

mysql不是自动增长的主键怎么利用ibatis返回值判断是不是插入成功

mysql怎么修改自动增长ID的步长

sql 设置主键 自动增长