修改username字段的时候,为什么不能再写unique key

修改username字段的时候,为什么不能再写unique key

视频中ALTER TABLE table_name
MODIFY username VARCHAR(30)NOT NULL UNIQUE KEY;出现警告说是索引值重复。对这一点我不是很理解,也许知道modify的工作过程是不是更好理解点?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 comeonboy1 2018-08-08 20:03:29

我忽然再想是不是这样:因为建立UNIQUE KEY约束时,会自动创建一个索引名,默认是字段名。我们在modify字段的unique key约束时,没有写索引名,所以还是默认使用字段名,这样跟原来的索引名字都重复了。所以,我怀疑执行modify语句,是不是先创建一个新字段,然后再删除原来的字段?例如:ALTER TABLE user3 MODIFY username VARCHAR(20) NOT NULL  UNIQUE;这句是不是分两步先是在表中添加一个username VARCHAR(20) NOT NULL  UNIQUE字段,然后再把原来的username VARCHAR(5) NOT NULL UNIQUE删除?

chrismorgen 2018-08-08 18:58:00

MODIFY表示修改列的类型,与之一起使用的有CHANGE,表示修改列的名称,出现索引重复你就要检查自己的建表语句是否出现索引重复,或者将你的建表语句语句粘贴上来,方便老师具有针对性的帮助你解决问题,祝学习愉快~

  • 提问者 comeonboy1 #1
    视频教程里是这样的: -- 测试修改字段类型和字段属性、字段名称 CREATE TABLE user3( id INT UNSIGNED AUTO_INCREMENT KEY, username VARCHAR(5) NOT NULL UNIQUE, password CHAR(32) NOT NULL, email VARCHAR(10) NOT NULL ); 然后,测试要求是: -- 将用户名字段的类型改为20 ALTER TABLE user3 MODIFY username VARCHAR(20) NOT NULL UNIQUE; 这条语句执行的时候会有索引重复的警告,视频中老师说,不需要写UNIQUE修改之后字段也有UNIQUE 约束。我就是不明白为什么UNIQUE不需要写,而且如果写了会有 索引值重复的 警告。
    2018-08-08 19:06:44
  • chrismorgen 回复 提问者 comeonboy1 #2
    因为你之前建表的时候username就有UNIQUE约束,你只需要修改字段类型就可以了,不需要在UNIQUE了,修改之后,程序会出现索引值重复的警告,祝学习愉快~
    2018-08-09 09:57:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师