mysql实现级联操作(级联更新、级联删除)
一、首先创建两张表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
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');
注意:在sc表中插入数据时,若插入的sid为22,则会插入失败,违反外键约束,因为外键sid
来自stu表中的id的主键,即stu中的id没有等于22的数据。
级联删除:将stu表中id为2的学生删除,该学生在sc表中的成绩也会级联删除
delete from stu where sid = '2';
级联更新:stu表中id为3的学生更改为id为6,该学生在sc表中的对应id也会级联更新
update stu set sid=6 where sid='3';
注意
删除表的时候必须先删除外键表(sc),再删除主键表(stu)
上图为违反外键约束,不能删除
上图为正常删除,先删除sc表,再删除stu表!
mysql实现级联操作(级联更新、级联删除)相关推荐
- Mysql定义DELETE操作触发器,将删除数据存入历史表
Mysql定义DELETE操作触发器,将删除数据存入历史表 SQL如下: // An highlighted blockDELIMITER $$ CREATE TRIGGER <触发器名称> ...
- java --级联操作(查询/更新)
2019独角兽企业重金招聘Python工程师标准>>> 1.表设计如下 2.测试数据如下 3.需求 查询某级别下面所有的子级别(假设级别最多只有3级),例如,某级别的id=10000 ...
- 在python的dataframe中进行类似于mysql的join操作(持续更新)
Mysql准备工作: T1 T2 T3 操作 mysql mysql结果 inner join select * from T1 inner join T2 on T1.user_id = T2.us ...
- 数据库操作--已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行
在对一个表做试验的时候,往里面添加了几条数据,后来发现原本想作为主键的字段的值都为"NULL",这可不行,删除重新来吧.选中删除的时候就出现了 "已更改或删除的行值要么不 ...
- mysql使用存储过程操作动态更新
https://blog.csdn.net/xiaosheng_papa/article/details/80635727
- Mysql级联操作,添加外键和删除外键
目录 1.级联操作CASCADE 2.删除外键,和添加外键 1.级联操作CASCADE 1.级联删除语法 on delete cascade 书写的位置:创建表的字段后边 2.级联修改语法 on up ...
- Hibernate学习总结(5)——一对多的级联操作
首先介绍一下一对多是什么,一对多关系是关系数据库中两个表之间的一种关系,该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关. 例如:我有一 ...
- [JavaWeb-MySQL]约束(非空约束,唯一约束,主键约束,外键约束_级联操作)
约束 * 概念: 对表中的数据进行限定,保证数据的正确性.有效性和完整性. * 分类:1. 主键约束:primary key2. 非空约束:not null3. 唯一约束:unique4. 外键约束: ...
- JPA3--双向与级联操作
JPA3–双向与级联操作 一 .单向一对多 1.1配置 在一方配置onetomany @Entity @Table(name="t_productDir") public clas ...
- Mysql创建触发器实现不同表的插入、更新、删除操作
说明:Mysql5.0以上的版本才支持下面的操作. Mysql 触发器的插入.更新.删除操作. 在这里建了两个表:其中这两个表的结构不一样,这里给表admin建立触发器 在对表admin操作的同时,触 ...
最新文章
- C++ 输入输出流 文本文件 二进制文件读写
- python手机版下载3.7.3-QPython3手机版下载
- 查看Tomcat使用的版本
- js中的preventDefault
- spark中stage的划分与宽依赖/窄依赖(转载+自己理解/整理)
- java codepointbefore_Java StringBuilder codePointBefore()方法与示例
- 二、MyBatis系列:全局配置文件
- spark python教程_spark2.x由浅入深深到底系列七之python开发spark环境配置
- 在计算机中 ascii码是几位二进制编码,ASCII码采用多少位二进制编码
- android timepicker分割线颜色,Android修改DatePicker字体颜色及分割线颜色详细介绍
- 短网址算法 php,PHP短网址生成算法
- html给图片加文字,如何给图片加上字
- 易语言大漠插件模块制作后台找字FindStrExS和FindStrFastExS
- Android EditText属性android:inputType类型介绍
- c语言——求逆矩阵,伴随矩阵,行列式
- 视频转文字怎么操作?这些方法值得收藏
- CRC-CCITT16(0xFFFF、XModem、0x1D0F、Kermit)
- dual_arm2_ws(version1.0.0)编译问题
- php相同数据合并单元格,jQuery_基于jQuery的合并表格中相同文本的相邻单元格的代码,ONE
已经生成的数据表格大致 - phpStudy...
- 查看期刊最近的影响因子