mysql 外键关联

mysql 外键关联

什么是外键:
外键是一个特殊的索引,用于关联两个表,只能是指定内容。

如我将新建一个daka的表,然后将此表的class_id 与另外一个class的表的cid字段关联

class表:

CREATE TABLE `class` (
`cid` int(11) NOT NULL AUTO_INCREMENT,
`caption` varchar(32) NOT NULL,
PRIMARY KEY (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;


mysql> select * from class;
+-----+------------+
| cid | caption |
+-----+------------+
| 1 | 高二1班 |
| 2 | 高二2班 |
| 3 | 高二3班 |
| 4 | 高二4班 |
| 5 | 高二5班 |
+-----+------------+


daka表:

CREATE TABLE `daka` (
`id` int(11) AUTO_INCREMENT NOT NULL,
`student_name` char(16) NOT NULL,
`state` ENUM("Y","N") NOT NULL,
`class_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `fk_class_key` FOREIGN KEY (`class_id`) REFERENCES `class` (`cid`)
)

#fk_class_key 这个表示这个外键约束名称,自定义的,此时在

开始往daka表中插入数据,(此时在class_id字段中的值,就必须在class表中的cid字段中要存在如果不存在则会报错,被外键约束)

正常:
mysql> INSERT INTO `daka` (student_name,state,class_id) values("赵丽颖","Y","3");
Query OK, 1 row affected (0.04 sec)

报错:
mysql> INSERT INTO `daka` (student_name,state,class_id) values("赵丽颖","Y","6");
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`newtest`.`daka`, CONSTRAINT `fk_class_key` FOREIGN KEY (`class_id`) REFERENCES `class` (`cid`))

在删除的数据的过程中,如果是删除daka表中有外键约束的数据则没有问题,但是如果是删除class表中被外键关联的数据则就会报错,

如下:
mysql> select * from daka;
+----+--------------+-------+----------+
| id | student_name | state | class_id |
+----+--------------+-------+----------+
| 1 | 赵丽颖 | Y | 3 |
| 8 | 赵丽颖1 | Y | 5 |
+----+--------------+-------+----------+
2 rows in set (0.00 sec)

mysql> select * from class;
+-----+------------+
| cid | caption |
+-----+------------+
| 1 | 高二1班 |
| 2 | 高二2班 |
| 3 | 高二3班 |
| 4 | 高二4班 |
| 5 | 高二5班 |
+-----+------------+
5 rows in set (0.00 sec)

mysql> DELETE FROM daka WHERE id=8;
Query OK, 1 row affected (0.08 sec)

mysql> DELETE FROM class WHERE cid=3;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`newtest`.`daka`, CONSTRAINT `fk_class_key` FOREIGN KEY (`class_id`) REFERENCES `class` (`cid`))

此处cid=3的这行数据被外键关联了,daka表中有引用他,所以不能直接被删除。

转载于:https://www.cnblogs.com/heaven-xi/p/10008280.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一章 计算机网络 4 性能指标 [计算机网络笔记]

第一章 计算机网络 4 性能指标 本笔记参考书目: 计算机网络(第8版)谢希仁2021王道计算机网络视频公开课 本节重点: 数据率/带宽/吞吐量时延/时延带宽积/RTT/利用率 转载请注明文章来源! 速率/数据率 速率&#xf…

数字孪生卫星:概念、关键技术及应用

来源:问空天作者:刘蔚然,陶 飞,程江峰,张连超,易旺民摘 要:在分析卫星产业发展趋势与升级转型新需求后,为推动卫星与新技术融合发展,提升大型卫星工程的整体管理水平与流…

第一章 计算机网络 5 分层结构/协议/接口/服务的概念 [计算机网络笔记]

第一章 计算机网络 5 分层结构/协议/接口/服务的概念 本笔记参考书目: 计算机网络(第8版)谢希仁2021王道计算机网络视频公开课 本节重点: 分层结构/协议/接口/服务实体/对等实体PCI/SDU/PDU 转载请注明文章来源! 分…

机器学习2021 | 机器学习算法如何商业落地?

来源:传感器技术未来十年最火的科技发展方向之一,那就是AI技术,而使其得到迅猛发展的就是机器学习了。机器学习,顾名思义,就是人类定义一定的计算机算法,让计算机根据样本和人为干预,进行归纳和…

运行期优化

前言 在部分的商用虚拟机中,Java程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块运行特别频繁的时候,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码…

第一章 计算机网络 6 OSI参考模型 [计算机网络笔记]

第一章 计算机网络 6 OSI参考模型 本笔记参考书目: 计算机网络(第8版)谢希仁2021王道计算机网络视频公开课 本节重点: OSI参考模型的7层次结构及其功能OSI参考模型数据传输的过程 转载请注明文章来源! 计算机网络的…

系统学习 Java IO (六)----管道流 PipedInputStream/PipedOutputStream

目录:系统学习 Java IO---- 目录,概览 PipedInputStream 类使得可以作为字节流读取管道的内容。 管道是同一 JVM 内的线程之间的通信通道。 使用两个已连接的管道流时,要为每个流操作创建一个线程, read() 和 write() 都是阻塞方法…

第二章 数据的表示和运算 2.1.3 字符与字符串 [计算机组成原理笔记]

第二章 数据的表示和运算 2.1.3 字符与字符串 本笔记参考书目: 计算机组成原理(第六版.立体化教材)白中英、戴志涛2021王道计算机组成原理视频公开课 本节重点: ASCII码/汉字编码字符串在内存中的表示 转载请注明文章来源&…

评阅百篇博士论文后我发现:博士生发SCI越多,通常科研能力越差!

来源:秦四清科学网博客 作者:秦四清多年来,我评阅了上百部博士学位论文,也参加了上百次的博士学位论文答辩会,我和不少老师有一个共同的深刻感受:在攻读博士期间,发表了多篇sci论文的博士生&…

第二章 数据的表示和运算 2.1.4 奇偶校验 [计算机组成原理笔记]

第二章 数据的表示和运算 2.1.4 奇偶校验 本笔记参考书目: 计算机组成原理(第六版.立体化教材)白中英、戴志涛2021王道计算机组成原理视频公开课 本节重点: 奇偶校验的方法/原理码距和检/纠错能力 转载请注明文章来源&#xf…

c# 常用数据库封装

我不为大家贴代码了,没有意思,有点多,我主要给大家介绍一下,源码会上传CSDN和GIT;我定义了一个ADO.NET操作接口,所有按照接口封装 1.sqlite数据库(需要SQLite.Interop.dll,采用.NetS…

深入分析5nm芯片

来源: 半导体行业观察苹果公司于2020年10月发布了新型智能手机“iPhone 12”系列,搭载的是采用5纳米工艺的全球首个名为“A14 BIONIC”芯片。苹果公司将“A14 BIONIC”芯片应用到了iPhone 12、新款“iPad Air”。2020年11月苹果公司又发布了搭载“Apple …

第二章 数据的表示和运算 2.1.5 汉明(海明)校验码 [计算机组成原理笔记]

第二章 数据的表示和运算 2.1.5 汉明(海明)校验码 本笔记参考书目: 计算机组成原理(第六版.立体化教材)白中英、戴志涛2021王道计算机组成原理视频公开课 本节重点: 海明(Hamming)校验码原理和编码方法 …

vivado下创建基本时序周期约束

创建基本时钟周期约束。(验证我们的设计能否在期望的频率上运行) (学习记录,晚一点会做实验传上来的。) 时钟基本概念:https://blog.csdn.net/wordwarwordwar/article/details/78259208 时序约束的基本概念…

我国的人工智能芯片的市场规模及发展前景

来源:人工智能实验室图片来源:网络随着深度学习技术的快速发展,以及互联网和云计算时代海量数据和高效计算能力的支撑,计算机视觉技术、语音技术、自然语言理解技术等人工智能技术取得了突破性进展,并解锁多个行业的人…

第二章 物理层 1 物理层的基本概念 [计算机网络笔记]

第二章 物理层 1 物理层的基本概念 本笔记参考书目: 计算机网络(第8版)谢希仁2021王道计算机网络视频公开课 本节重点: 物理层功能和作用(了解名词即可) 转载请注明文章来源! 物理层接口特性…

TiDB 架构及设计实现

一. TiDB的核心特性 高度兼容 MySQL 大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。 水平弹性扩展 通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储&am…

南洋理工75页最新「深度学习对话系统」大综述论文,最全面概述深度学习对话技术进展...

来源:专知 摘要对话系统是一个流行的自然语言处理(NLP)任务,因为它在现实生活中应用前景广阔。这也是一个复杂的任务,因为涉及到许多需要研究的自然语言处理任务。因此,关于深度学习的对话系统研究的大量工作开展了。在这个综述中…

第二章 物理层 2,3 数据通信基础知识 [计算机网络笔记]

第二章 物理层 2,3 数据通信基础知识 本笔记参考书目: 计算机网络(第8版)谢希仁2021王道计算机网络视频公开课 本节重点: (了解即可) 通信方式:单工/半双工/全双工传输方式:并行/串行传输同步/异步传输…

【多线程】:Synchronized和ReentrantLock的对比

相同点: 两者都是可重入锁,同一个线程每进入一次,锁的计数器都自增1,等到锁的计数器下降为0时才能释放锁。 底层实现对比: Synchronized是依赖于JVM实现的,而ReentrantLock是JDK实现的。 性能对比&#xff…