当前课程知识点:数据库技术应用 > 学习情境四、银行存取款机数据库编程 > 模块2、银行存取款机触发器 > 4.2.2UPDATE触发器
大家好
欢迎来到数据库技术应用开放课程
今天的任务是update特触发器
在银行存取款业务中
每次用户进行余额修改的时候
自动识别交易类型是存款还是取款
然后将交易信息插入到交易信息表当中
那么这个问题怎么解决
我们本节课的目标就是让大家通过这个任务
继续理解触发器的优点
掌握update触发器的创建方法
那么对于update的触发器的创建来说
它的语法结构和我们前面所讲的语法结构是一样的
只不过在触发器名称触发器时间的后面
我们触发器的类型确定了就是update触发器
其他的都沿用触发器创建的语法格式
那为了完成这个任务我们需要分析一下
每次用户进行余额修改的时候
自动识别交易金额是存款还是取款
然后把交易信息插入的交易业绩表当中
我们需要按照前面我们所讲解的触发器的原理去思考一下
在这个问题当中触发原因是什么触发结果又是什么
我们分析一下触发的原因
其实就是银行卡信息表当中我们余额的一个修改
那么根据这个修改的情况
就可以去判断他是存款还是取款了
所以触发原因就是cardinfo表的update操作
那么触发结果是什么
来判定我的交易类型存款还是取款
并且将交易信息插入到交易信息表当中
那么我们的触发器就可以来设计了
Create trigger触发器名称
after update on cardinfo for each row
begin 下面是我相应的一个触发结果
那要是像刚刚说触发结果
我先声明几个变量
大家来看一下
declare vtype varchar 10
这个变量里将来存什么
存的一定是我的交易类型
接下来
declare m1 int
declare m2 int
这两个变量当中又来存什么
这两个变量用来存放的是我的余额
那select. old balance into m1 from
cardinfo where cardID =old.cardID
用了一个select into from where结构
实际上是从表当中查出数据
放在了我们的m1变量里
从哪个表当中查数据
大家看一下从cardinfo表当中来查数据
Where cardID等于old . cardID
也就是说用到了我们的临时表OLD
咱们前面说过
如果你是update触发器的话
既用到old也用到new
因为你带删除的数据是先放在old里的
带插入的数据是放在new里面的
进行业务验证
所以第一次取数据放在m1里的时候
他是进行了old表的一个验证
那么第二次大家看
select new . balance into m2
from cardinfo where cardID=old . cardID
这是从待插入的这个表当中取出来
另一个old . balance放在了m2当中
那取出这两个余额有什么用
我们要做存款还是取款的判断
所以当然要比较这两个余额的大小了
IF m2>m1
If m2>m1
那说明什么情况
说明是存入状态对吧
所以下面应该是then set vtype 等于存入
那相反
else set vtype等于 支取
end if结束
然后接下来还有一件事没有做
将交易信息插入到交易信息表当中
我们用到insert into values把这条数据插进去
end结束
然后恢复我们的结束符分号
这样的话就可以实现在存取款业务当中
当用户进行余额修改的时候
自动识别是支取还是存入
并且将交易信息插入到我们的交易信息表当中了
大家下去可以在我们的mysql环境当中去测试一下
好我们来看怎么测试
既然你的触发原因是cardinfo表当中余额的修改
那么测试的时候一定用到update set where语句
update哪个表
cardinfo表
set什么
balance等于balance减200
where cardID等于一个卡号
这样的话就可以根据你现在的一个情况
做的修改的一个情况来系统自动给出他是支取还是存入
并且把相关的记录放在我们的transinfo
所以为了看结果
我们还需要select * from cardinfo
select * from transinfo 来看具体表的一个数据的变化
今天的拓展任务是员工管理数据库update的触发器的应用
感谢大家的聆听
-模块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备份和恢复