常春岛资源网 Design By www.syssdc.com
前言
用Navicat为mysql数据库的两个表之间建立外键关系,出现“cannot add foreign key constraint”错误,操作了很久不知道怎么回事,发现竟然是。。。。
正文
想要建立class表与student表之间的外键连接,class为父表,student为子表
打开student的设计表。
如果c_id不允许为空则当,选择删除时--SET NULL就会出现Cannot add foreign key constraint的提示,这是因为删除置空有条件,必须满足字段允许为空(如果不满足,外键无法创建)当然,如果不允许为空,可以选择删除时--CASCADE也可以建立外键。
当勾选允许为空之后
再去保存就可以了。
还有必须注意,Engin必须为InnoDB。
总结一下:
外键条件
在我们使用外键的时候,应该遵循如下条件:
- 外键要存在,首先必须保证表的引擎是 InnoDB(默认的存储引擎),如果不是 InnoDB 存储引擎,那么外键可以创建成功,但没有约束作用;
- 外键字段的字段类型(列类型),必须与父表的主键类型完全一致;
- 每张表中的外键名称不能重复;
- 增加外键的字段,如果数据已经存在,那么要保证数据与父表中的主键对应。
- 如果外键约束模式选择SET NULL ,那么字段必须允许为NULL,否则出现Cannot add foreign key constraint。
外键约束
所谓外键约束,就是指外键的作用。之前所讲的外键的作用都是默认的作用,实际上,可以通过对外键的需求,进行定制操作。
外键约束有三种模式,分别为:
district
:严格模式(默认),父表不能删除或更新一个已经被子表数据引用的记录;cascade
:级联模式,父表的操作,对应子表关联的数据也跟着被删除;set null
:置空模式,父表的操作之后,子表对应的数据(外键字段)被置空。
设计外键的界面,有七列:
- 名(name):可以不填,保存时会自动生成。
- 栏位(FieldName):要设置的外键,如:student 里的c_id
- 参考数据库(Reference DataBase):外键关联的数据库
- 被参考表(Reference Table):关联的表,这里是class表
- 参考栏位(Forgin filed Names):关联的字段,class里的id
- 删除时(ondelete):删除时候的动作,当时我选择的是SETNULL
- 更新时(onupdate):更新时候的动作,我选择的是CASCADE
以上字段也可以按照自己的需求填写,设置完成后保存即可。
某个表已经有记录了,添加外键失败,这时候只需要将两个要关联的表中的数据清空再从新添加外键关系即可。
常春岛资源网 Design By www.syssdc.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
常春岛资源网 Design By www.syssdc.com
暂无评论...
更新日志
2024年05月29日
2024年05月29日
- 梁汉文《不愿一个人》华星40金唱片[WAV分轨]
- 李宗盛《李宗盛精选滚石香港黄金十年》[WAV/分轨][670MB]
- 群星 模拟之声慢刻CD《发烧宝丽金35周年》[WAV+CUE][640MB]
- 《古惑仔系列电影合集1996-1998》[FLAC/分轨][780MB]
- 鸣潮自选4星武器推荐攻略 4星自选武器哪个最好
- 鸣潮自选5星武器怎么获取 五星自选武器哪个最好
- 鸣潮联觉等级怎么提升 联觉等级升级攻略
- 甄妮《皆因你的爱》华星40金唱片[WAV分轨]
- 陈奕迅《时代曲》华星40金唱片)[WAV分轨]
- 蔡依林《2004BornToBeAStar(超级珍藏世纪精选2CD)》[WAV整轨]
- 《碧海黑帆》新赛季预告公布 又有免费试玩生怕你不玩
- 刘德华《天王巨星经典情歌典藏2CD》[WAV+CUE][1.3GB]
- 斯琴格日乐《强烈直接的音乐方式 姿态》[WAV+CUE][500MB]
- 王菲《收录12首 只爱陌生人》[WAV+CUE][540MB]
- 鸣潮清芬鱼汤制作材料是什么 清芬鱼汤制作攻略分享