MySQL外键级联如何实现


简介

mysql外键起到约束作用,在数据库层面保证数据的完整性。
例如使用外键的cascade(cascade串联)类型,当子表(例如user_info)关联父表(例如user)时,父表更新或删除时,子表会更新或删除记录,这个过程是数据库层面完成的。
早期企业系统数据库设计里面比较多,虽说帮程序员节省了delete、update操作,实际上增加了潜规则,也增加了软件复杂度,也会减弱性能。

所以在应用程序设计中,我们应尽量在应用层保证数据的完整性(如使用事务处理机制),而不是数据库层面。

下面对MySQL的外键进行介绍。

MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引子表在创建外键的时候也会自动创建对应的索引。

在创建索引的时候,可以指定在删除、更新父表时,对子表进行的相应操作,包括

  • RESTRICT (restrict 约束 限制)

  • NO ACTION

  • SET NULL

  • CASCADE (串联)

RESTRICT和NO ACTION相同,是指在子表有关联记录的情况下父表不能更新
CASCADE表示父表更新或者删除时,更新或者删除子表对应记录
SET NULL则是表示父表在更新或者删除的时候,子表的对应字段被SET NULL。

示例

因为只有InnoDB引擎才允许使用外键,所以,我们的数据表必须使用InnoDB引擎。

创建数据库:

Create database test;

一、首先创建两张表stu,sc

create table stu(
sid int UNSIGNED primary key auto_increment,
name varchar(20) not null)
TYPE=InnoDB charset=utf8;

create table sc(
scid int UNSIGNED primary key auto_increment,
sid int UNSIGNED not null,
score varchar(20) default '0',
index (sid),   --外键必须加索引
FOREIGN KEY (sid) REFERENCES stu(sid) ON DELETE CASCADE ON UPDATE CASCADE)
TYPE=InnoDB charset=utf8;

–说明: 外键必须建立索引;

FOREIGN key(sid) 设置外键,把sid设为外键

REFERENCES stu(sid) 引用作用。引用stu表中的sid

动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版 动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版

动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联J*aScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR*函数库的强大功能,对常用的、强大的包

动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版 508 查看详情 动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版

ON DELETE CASCADE 级联删除
ON UPDATE CASCADE 级联更新

二、向两张表插入数据

insert into stu (name) value ('zxf');
insert into stu (name) value ('ls');
insert into stu (name) value ('zs');
insert into stu (name) value ('ww');

insert into sc(sid,score) values ('1','98');
insert into sc(sid,score) values ('1','98');
insert into sc(sid,score) values ('2','34');
insert into sc(sid,score) values ('2','98');
insert into sc(sid,score) values ('2','98');
insert into sc(sid,score) values ('3','56');
insert into sc(sid,score) values ('4','78');
insert into sc(sid,score) values ('4','98');

MySQL外键级联如何实现

注意:在sc表中插入数据时,若插入的sid为22,则会插入失败,违反外键约束,因为外键sid
来自stu表中的id的主键,即stu中的id没有等于22的数据。

级联删除:将stu表中id为2的学生删除,该学生在sc表中的成绩也会级联删除

delete from stu where sid = '2';

MySQL外键级联如何实现

级联更新:stu表中id为3的学生更改为id为6,该学生在sc表中的对应id也会级联更新

update stu set sid=6 where sid='3';

MySQL外键级联如何实现

注意

删除表的时候必须先删除外键表(sc),再删除主键表(stu)

MySQL外键级联如何实现

上图为违反外键约束,不能删除

MySQL外键级联如何实现

上图为正常删除,先删除sc表,再删除stu表!

以上就是MySQL外键级联如何实现的详细内容,更多请关注其它相关文章!


# 如何设置  # seo优化具体步骤  # 网站seo如何优化价格  # 佛山网站建设公司电话  # 西藏营销推广网站  # 伦敦网站建设项目  # 用户细分 营销推广  # 哪个网站推广苗木专业  # 民勤县网络seo优化  # 长顺县seo工厂  # 网站推广专家面试  # MySQL  # 增加了  # 主键  # 图为  # 两张  # 或删除  # 也会  # 如何实现  # 镜像  # 级联 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 《虎扑》取消评分记录方法  获取WooCommerce产品在后台编辑页面的分类ID  mysql通配符能用于日志查询吗_mysql通配符在系统日志查询中的实际使用方法  sublime怎么快速在浏览器中预览HTML_sublime配置View in Browser教程  iQOO手机信号差网络不稳定怎么办 信号问题原因排查与增强设置【攻略】  追剧达人如何发弹幕  J*aScript深度克隆:实现高效、健壮与安全的复杂对象复制  谷歌浏览器怎么把网页翻译成中文_Chrome网页翻译功能使用方法  MySQL多重关联查询:利用别名高效获取同一表的多个关联字段  ExcelSCAN与LAMBDA如何创建自定义移动平均函数_SCAN实现任意窗口期移动平均计算  QQ网页版入口导航 QQ网页版在线访问通道  暴风影音官网正式版_暴风影音手机版官网下载安卓  C++怎么实现一个红黑树_C++高级数据结构与平衡二叉搜索树  163邮箱网页版入口 163邮箱在线使用  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用  《edge浏览器》关闭翻译功能方法  使用逻辑应用(Logic Apps)自动处理邮件附件中的XML到Excel  《律学法考》查看学习数据方法  键盘保修需要什么_键盘售后维修流程  《雅迪智行》用手机开锁方法  POKI小游戏在线免费入口链接 POKI小游戏无下载秒玩玩  《盗墓笔记手游》技能介绍  消除网页顶部意外空白线:CSS布局常见问题与解决方案  外卖小程序对接第三方配送  VS Code的时间线(Timeline)视图:您的代码时光机  Mac hosts文件在哪里_Mac修改hosts文件详细教程  店铺如何做视频号推广?做视频号推广有用吗?  《深林》冬季章节图文攻略  创建快捷方式启动系统保护  163邮箱登录入口官网 163.com邮箱登录入口  J*aScript实现网页表单实时输入字段比较与验证教程  《procreate》绘制渐变效果教程  Flexbox布局:实现粘性导航与底部页脚的完美结合  J*aScript模块加载器_RequireJS原理分析  天堂漫画网页版在线阅读 天堂漫画手机版入口  《微信》视频号原创声明开启方法  猫眼电影app如何参与官方的抽奖活动_猫眼电影官方抽奖参与方法  windows10怎么开启卓越性能_windows10电源选项代码激活  照片整理的黄金法则是怎样的? 理解“收集-筛选-归档-备份”四步流程  PyEZ 配置提交中 RpcTimeoutError 的健壮性处理策略  蜻蜓FM如何设置移动流量播放  从HTML表单获取逗号分隔值并转换为NumPy数组进行预测  智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法  《磁力猫》最好用的磁官网  百度识图图像分析 百度识图识别平台  魔法祈幻界兑换码礼包大全  解决异步Python机器人中同步操作的阻塞问题  鲨鱼剧场app金币获取方法  什么是Satis,如何用它搭建一个私有的composer仓库? 

 2023-05-29

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.