当前位置: 首页 > news >正文

mysql的常见的外键约束

一  mysql的常见的外键约束策略

设计外键时,mysql提供了4种外键关联策略

1、RESTRICT 限制(默认)

如果有外键关联了tb_class 的id,则tb_class 不能删除被关联的记录、不能更新关联记录deptId字段的值(会报错)。

2、CASCADE 级联

删除tb_class 中的记录时,会自动删除tb_student中与之关联的记录;修改tb_class中tb_student字段的值时,会自动修改tb_student中与之关联的记录的外键字段的值(同步变化)。

3、NO ACTION 不做处理

删除、更新tb_class中的id字段的值时,tb_student中与之关联的记录不作任何处理。此种策略需要存储引擎支持,如果存储引擎不支持,会自动换为RESTRICT。

4、SET NULL 置为NULL

删除tb_student的记录,或者更新id字段的值,会自动将tb_student中与之关联的记录的外键字段的值置为NULL。

二 案例

1.新建一个tb_class 和一个tb_student表

CREATE TABLE `tb_class` (
  `id` int(11) NOT NULL,
  `class_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tb_student` (
  `id` int(11) NOT NULL,
  `sname` varchar(255) DEFAULT NULL,
  `cid` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `cid` (`cid`),
  CONSTRAINT `tb_student_ibfk_1` FOREIGN KEY (`id`) REFERENCES `tb_class` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.首先需要添加数据时候,修改数据,删除数据时候,都必须先把父表进行操作,直接操作子表,则报错:

2.直接删除父表,有子表的引用,不让删除

 

 

相关文章:

  • React基础-JSX语法介绍
  • SAP ABAP代码自动生成demo
  • 【JS】JavaScript入门笔记第七弹之JS简单类型与复杂类型~
  • 什么是狭义人工智能、通用人工智能和超级人工智能?
  • mybatis-spring的整合
  • Python并发方案深度对比
  • 大疆创新2022数字芯片B卷
  • C# 简单封装异步Socket Server
  • AI插件开发-AIApplicationSuite模块-应用程序-AIActionManagerSuite模块-动作管理-illustrator插件
  • 关于 sap.ui.base.Object 的简要介绍
  • 薪资16K,在华为外包做测试是什么一种什么体验···
  • C++ 01背包
  • redis 分布式锁
  • 剑指 Offer 14- I. 剪绳子
  • word可以画神经网络图吗,如何画神经网络结构图
  • 《Java编程思想》读书笔记-对象导论
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Bootstrap JS插件Alert源码分析
  • Git学习与使用心得(1)—— 初始化
  • Node项目之评分系统(二)- 数据库设计
  • Python实现BT种子转化为磁力链接【实战】
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 如何解决微信端直接跳WAP端
  • 小试R空间处理新库sf
  • 阿里云服务器购买完整流程
  • ###STL(标准模板库)
  • #define与typedef区别
  • #QT(TCP网络编程-服务端)
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • ${ }的特别功能
  • (26)4.7 字符函数和字符串函数
  • (SpringBoot)第七章:SpringBoot日志文件
  • (六)Hibernate的二级缓存
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一)认识微服务
  • (原創) 未来三学期想要修的课 (日記)
  • (转)大型网站的系统架构
  • .java 9 找不到符号_java找不到符号
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • /var/log/cvslog 太大
  • [20150321]索引空块的问题.txt
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [APUE]进程关系(下)
  • [BROADCASTING]tensor的扩散机制
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [CTF]2022美团CTF WEB WP
  • [C语言]编译和链接
  • [dfs] 图案计数
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  • [EWS]查找 文件夹
  • [leetcode] 四数之和 M
  • [ndss 2023]确保联邦敏感主题分类免受中毒攻击