请问表和表相关联的这段代码怎么解读

请问表和表相关联的这段代码怎么解读

alter table cake add constraint FK_Reference_1 foreign key (cid)

      references catalog (id) on delete restrict on update restrict;


正在回答

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

1回答

同学你好。下面一点点拆解:

alter table cake add constraint FK_Reference_1 foreign key (cid)

      references catalog (id) on delete restrict on update restrict;

1、“alter table cake ”指定了要修改的表是cake。“add constraint FK_Reference_1 ”表示添加一个约束,约束名为FK_Reference_1。

2、“foreign key (cid) references catalog (id)”定义一个外键约束,在本表上的列是cid 依赖的是 catelog表的id这一列。也就是说,约束规定了本表中cid这个字段的值必须是在catelog表的id中已存在的。

3、“on delete restrict on update restrict”修饰了这个外键的规范是在什么时机起作用的。这个约束只在删除和更新表的时候起作用。

如果解答了同学的疑问,望采纳~

祝学习愉快~

  • 松糕 提问者 #1
    mysql> alter table cake add constraint FK_Reference_1 foreign key (cid) -> references catalog (id) on delete restrict on update restrict; ERROR 1022 (23000): Can't write; duplicate key in table '#sql-1304_14' 可这样出错了
    2019-11-18 17:24:20
  • 芝芝兰兰 回复 提问者 松糕 #2
    这个报错是指当前的约束名在同学的数据库里的表'#sql-1304_14'已存在。同学可以尝试换一个外键名试试,一般外键名未避免重复会这样命名“FK_当前的表名_依赖的表名_On_当前加外键的字段名 ”,所以同学可以使用命令“alter table cake add constraint FK_cake_catelog_on_cid foreign key (cid) -> references catalog (id) on delete restrict on update restrict;”试试,祝学习愉快~
    2019-11-18 18:00:26
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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