为了账号安全,请及时绑定邮箱和手机立即绑定

关于主键约束删除后,唯一约束变成主键约束的问题~~

这里删除主键约束后,唯一约束的确是变成了主键约束~~~~

但是假如我的表里有多个唯一约束,那我删除主键约束后,会发生怎样的效果~~~

求大神~~~

正在回答

4 回答

删除主键后,如果唯一约束想“变成”主键约束,需要唯一约束字段满足 NOT NULL 条件。

0 回复 有任何疑惑可以回复我~

删除主键后,最先定义唯一约束的那个字段变为“主键”(多个唯一约束的情况下,不是按字段顺序变为主键的,而是按照唯一约束添加的先后),但这主键并不是真正意义上的主键,删除它仍需使用ALTER TABLE tbl_name DROP INDEX index_name,  而不能采用DROP PRIMARY KEY, 那个沦为“主键”的唯一约束一定意义上说,并不是主键,仍是一种索引,一种约束。由于我也是初学MySQL我并不能更深层的解释这个原因,以上都是我刚才实验得出的结论,希望有帮助,有不对的希望能指出!

2 回复 有任何疑惑可以回复我~

我做了几个实验分享一下:

1,有几个多个唯一约束时,删去主键约束属性的主键约束后,数据表的第一个带有唯一约束的属性变成主键约束;

2,此时添加一个主键约束的属性,成功,且发现上一步变成主键约束的又变回唯一约束(表中只有一个主键约束)

3,此时我又添加了一个主键约束的属性,报错:ERROR 1068(4200):Multiple primary key defined

(平行世界里在1后又做了个实验,既然第一步有一个变成主键约束,那我再删一次主键约束:

结果;报错:Can't DROP 'PRIMARY';check that column/key exits)=。=)

5 回复 有任何疑惑可以回复我~
#1

Mascots

删除主键后,最先定义唯一约束的那个字段变为“主键”(多个唯一约束的情况下,不是按字段顺序变为主键的,而是按照唯一约束添加的先后),但这主键并不是真正意义上的主键,删除它仍需使用ALTER TABLE tbl_name DROP INDEX index_name, 而不能采用DROP PRIMARY KEY, 那个沦为“主键”的唯一约束一定意义上说,并不是主键,仍是一种索引,一种约束。由于我也是初学MySQL我并不能更深层的解释这个原因,以上都是我刚才实验得出的结论,希望有帮助,有不对的希望能指出!
2016-07-26 回复 有任何疑惑可以回复我~

还没学到,看不懂

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396886    人
  • 解答问题       3353    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

关于主键约束删除后,唯一约束变成主键约束的问题~~

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信