当前课程知识点:数据库技术应用 > 学习情境四、银行存取款机数据库编程 > 模块2、银行存取款机触发器 > 4.2.3DELETE触发器
大家好
欢迎来到数据库技术应用在线开放课程
今天的任务是delete触发器
我们要完成创建一个触发器
在userinfo表当中
当删除客户信息的时候
将cardinfo表当中与该客户有关的数据全部删除
拿到这个任务的时候
大家来观察一下它涉及到了两个表
一张userrinfo表一张cardinfo表
实际上描述的问题就是咱们之前说过的一个叫级联的问题
那么涉及到两个表之间的关联
那么在这个两个表一个表删除
另外一个表也跟着删除数据的时候
大家想那如果成功
那如果成功两个表做了级联删除
但如果失败从userinfo表当中删除客户信息
但是cardinfo删的时候出现了问题
那么这时候实际上所有的操作是要进行回滚的
所以这里面又涉及到了事物的特征
并且这个过程不可能是人为干预
是需要自动去执行的
所以通过刚刚咱们做的分析他具备了事务
具备了两个表之间的关联
还具备了自动执行这三个特征
我们就可以用delete触发器
来进行最佳方案的一个解决
所以今天我们课程的目标就是理解触发器的优点
掌握delete触发器的一个创建方法
delete触发器的创建方法
和我们前面说的insert触发器
update触发器的创建方法是一样的
那我们的类型需要改成delete
其他的地方也用我们触发器的语法结构
那为了完成这个任务
我们再来分析一下
对于这个任务来说
触发原因是什么 触发结果是什么
触发原因是在userinfo表当中删除客户信息
那触发结果是什么是cardinfo表当中删除和该客户有关的数据
所以原因有了结果有了
我们就可以按照语法结构来写触发器的创建了
Create trigger触发器名称
After delete on userinfo for each row
begin中间是触发的结果
触发的结果是我们cardinfo表数据的一个删除
那就写delete from where结构
delete from后面是cardinfo
where后面是customerID等于什么
old . customerID
也就是用到了我们的临时表
我们的数据要从这个临时表当中来获取
那么这样我的这个触发器就创建好了
接下来我们来看一下测试
触发的原因是删除操作
那么测试的时候肯定用到delete from where
触发的原因是userinfo表
所以我们删除的表员应该是userinfo
做了一个什么样的删除
customerID等于1001
那么这时候大家就可以用select * from userinfo
select * from cardinfo去看一下相关的1001的数据
有没有在userinfo和cardinfo当中都做了删除操作
如果说没有真的删掉了
那么我们这个触发器就已经创建成功了
下去大家可以在我们的mysql环境当中自己去测试一下
今天的拓展任务是员工管理数据库delete触发器的应用
感谢大家的聆听
-模块1、数据库的基础知识
--数据库的基础知识
-模块2、MYSQL介绍与安装
--MYSQL介绍与安装
-模块3、银行存取款机数据库的创建与维护
--银行存取款机数据库的创建与维护
-模块4、银行存取款机数据库的设计
--银行存取款机数据库的设计
-模块1、表的创建
--2.1表的创建
--表的创建
-模块2、表的管理
--2.2表的管理
--表的管理
-模块3、索引
--2.3索引
--索引
-实践小课堂:宠物电商管理平台数据库和表的创建
-模块1、银行存取款机数据插入、修改和删除
--银行存取款机数据插入、修改和删除
-模块2、银行存取款机简单查询
--银行存取款机简单查询和统计查询
-模块3、银行存取款机连接查询
--3.3连接查询
--银行存取款机连接查询
-模块4、银行存取款机子查询
--3.4子查询
--银行存取款机子查询
-模块5、银行存取款机分类汇总与排序
--银行存取款机分类汇总与排序
-模块6、银行存取款机视图
--银行存取款机视图
-模块1、银行存取款机存储过程
--4.1.2事务
--银行存取款机存储过程
-模块2、银行存取款机触发器
--银行存取款机触发器
-模块1、MYSQL用户管理
--MYSQL用户管理
-模块2、MYSQL权限管理
--MYSQL权限管理
-模块3、MYSQL数据库的锁机制
--MYSQL数据库的锁机制
-模块4、MYSQL备份和恢复
--MYSQL备份和恢复