老师,我用子表的外键content关联父表的唯一键cateName,为什么不行?

老师,我用子表的外键content关联父表的唯一键cateName,为什么不行?

create table news_cate(
    id TINYINT unsigned not null auto_increment key,
    cateName VARCHAR(50) not null unique,
    cateDesc VARCHAR(100) not null DEFAULT ''
  );

  create table news(
    id int unsigned not null auto_increment key,
    title varchar(100) not null unique,
    content varchar(1000) not null,
    cateId TINYINT not null
  );
  alter table news add constraint news_id_ifk foreign key(content) references news_cate(cateName);

http://img1.sycdn.imooc.com//climg/5f4a5dfc09d0113213190074.jpg

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

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

2回答
好帮手慕小班 2020-08-30 18:14:06

同学你好,子表的外键字段与父表的唯一键字段不是同一种类型,这也是报错的一种写法。

    但是查看同学贴出的sql语句,content与cateName是同一中类型,猜测同学可能是在数据表中增加了几条记录,这样可能报错,同学可以尝试将记录删除再来试试。

继续加油  祝:学习愉快~

好帮手慕小班 2020-08-30 11:41:46

同学你好,一般是因为,设置的外键和对应的另一个表的主键值不匹配。
同学是不是存在不匹配的值呐,同学可以尝试删除表格中的数据,再来试试,比如:

直接创建表格,再来执行

http://img1.sycdn.imooc.com//climg/5f4b1f8b09e7f7d108460334.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 qq_就是这样_1 #1
    老师,你是说我的代码中子表的外键content或父表的唯一键cateName赋的值不是同一种类型的吗?
    2020-08-30 17:42:05
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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