当前课程知识点:数据库技术应用 >  学习情境四、银行存取款机数据库编程 >  模块1、银行存取款机存储过程 >  4.1.2事务

返回《数据库技术应用》慕课在线视频课程列表

4.1.2事务在线视频

下一节:任务实施:银行存取款机事务

返回《数据库技术应用》慕课在线视频列表

4.1.2事务课程教案、知识点、字幕

大家好

欢迎来到数据库技术应用在线开放课程

今天我们要完成的任务是事物

银行转账业务的实现那什么是转账

转账总共分成几个步骤

比如我现在要给正在学习的你转账两万元

那么需要两个步骤

第一要从我的卡上先取两万

第二在向你的卡上存两万

那如果这个操作成功转账就成功了

那如果说中间出现了断裂

等等一些情况的时候操作就失败了

那这时候钱去哪了

钱是给了银行还是不翼而飞了

其实如果说在这个操作过程当中失败了的话

我们心里都很清楚

在实际的银行业务当中

这个钱是返回到我的卡上了

不会出现给银行或者不翼而飞的情况

那这是怎么实现的

我们一起来学习一下

本节课我们主要学习的目标就是理解事物的应用

掌握事物的使用方法

我们一起进入知识技能学习

事物是由作为一个单独单元的一个或多个SQL语句组成的

这个单元当中每个SQL语句是互相依赖的

而且单元作为一个整体是不能分割的

如果单元中的一个语句不能完成

那整个单元都会进行回滚

所有的影响数据都会返回到事务开始以前的状态

因而只有事务当中所有语句都成功的执行

才能说这个事务被成功的执行了

比如说大家看的这个图

员工管理系统如果添加员工成功

那么这我们就可以分配部门设置工资和奖金了

否则什么都不做

所以对于事物来说

简单来说它就是一系列操作的集合

要么都做 要么都不做

我们就把它用事物来解决

那要用事物的话

首先用户必须先关闭自动提交

事务才能由多条SQL语句构成

否则作为单个语句执行

那么怎么来关闭

使用下面的语句

set @@ autocommit等于0进行关闭

关闭之后我们就可以开始第一步开始事务

第一个应用程序的第一条SQL语句

或者在commit和rollback语句后面的第一条SQL语句执行后

一个新的事物也就开始了

另外还可以使用一条start transaction语句来显示的启动一个事务

他的语法格式是start transaction 或者是begin work

那么开始事务之后就是结束事务

如果说这个事务要结束

我们用到的关键字是commit他是提交语句

它使得自从事物开始以来所执行的所有数据修改

成为数据库的永久部分

也标志一个事务的结束

第三个撤销事务用rollback语句

他是可以进行事务的撤销的

也就是说他可以撤销所做的修改

结束当前事务

第四个叫回滚事务这一步除了撤销整个事务以外

用户可以选择回滚来回到某一个状态

那既然回到某个状态我们需要提前做一个事情

就是先设置一个保存点

怎么来设置用savepoint identified后面跟上名称

就可以设置一个保存点了

那么下面如果你要进行回滚rollback的话

就可以直接用rollback to savepotion identified

我们的保存点名称

然后回到我们保存点的位置

也就是我们的回滚事务

下面几个语句说明了有关事务的处理过程

我们来看一下

第一个start transaction第二个update

第三个delete第四个是savepoint s1

第五个delete第六个rollback work to savepotion s1

第七个insert第八个commit work

这是一个由八个操作构成的

我们这样一个事物

当然里面包括开始事务回滚保存点等等

这些一系列操作他作为一个整体来实现

那么刚才说到了第一行start transaction

他就是一个开始事务

第二行第三行语句是对数据进行了修改

但是没有提交第四行的设置了一个保存点

第五行删除了数据但是也没有提交

第六行将事务回滚到保存点S1

这时第五行所做的修改被撤销了

第七行修改的数据第八行结束了这个事务

这时237行对数据库的修改被持久化了

这是一个完整的事物过程

那我们来看一下任务实施

你好请问有什么业务需要办理

我想用自动取款机转账请问取款机在什么位置

自动取款机在前面拐角处右转

大家看了我们刚才的转账的动画

重温了转账的过程

那我们来看一下如果在程序事件过程当中

我们的流程图是怎么来画的

首先开始事物需要你比较余额和交易金额的差值money

如果这个money小于1的

说明什么说明他余额不足了

那就不能进行转账操作

所以有一个结束事务

那么如果说money小于1是否

那也就是说他其实余额是满足条件的

那么修改转出卡号的余额

再修改转入卡号的余额

也就是说一个做减法一个做加法

最后在结束事务

转账成功用的是分支结构来判断两种情况

我们来看一下怎么来写这个代码

首先按照咱们刚才说的先set @@ autocommit等于零

然后delimiter$符号

我们先设置一个结束符

create procedure我们来创建存储过程

这里面涉及到了三个参数

大家观察一下

三个参数都是in来控制的

也就是都是输入参数

包括我们的cardID1 cardID2还有一个transmoney

也就是第一张卡的卡号

第二张卡的卡号和我们的交易金额

那begin开始处理

declear money int start transction开始我们的事务

select balance减去transmoney into money from

cardinfo where cardID =cardID1

这里面做了一个提取数据

提取我们的余额和交易金额的差值存在了money里

为的是将来进行判断

好我们就可以判断了if money小于一 then commit

小于1刚才说值执行的是左手边的这个分支

也就是说要提交事务结束了

并且要提示用户select余额不足

无法转账As result

那else也就是说我们的余额满足条件

那就做两个修改

Update set where

update set where刚刚咱们说了

一个是减法一个是加法

也就是先从我的卡上取钱

再从你的卡上存钱这样一个过程

所以大家看这是大家熟悉的update set where语句

那么这两行语句

两个update set 语句在写的过程当中

大家要注意看着card1、card2

也就是我们的

看着cardID1,cardID2不要弄混了

一个是转出卡一个是转入卡

好这两个update写完之后

接下来commit 事务结束

然后色select转账成功

as result

也是给用户一个提示

如果你走这个分支转账是可以的

接下来endif分支结构结束,end 两$符号结束

我们的存储过程结束

最后把结束符恢复成分号

那么我们的事务就做好了

接下来要进行测试

测试的话刚刚咱们说了两个分支

一种是转账失败一种是转账成功

那么根据这两种情况

我们用call来调用存储过程

分别去测试一下

这两个分支能不能正常运行

结果完全正确

那么结果的出现需要大家用select * from cardinfo去查看

那我的任务就完成了

今天的拓展任务是员工管理数据库事务的应用

感谢大家的聆听

数据库技术应用课程列表:

学习情境一、银行存取款机数据库创建与管理

-模块1、数据库的基础知识

--1.1.1数据库设计-数据库的基本概念

--1.1.2数据管理的发展和数据库体系结构

--数据库的基础知识

-模块2、MYSQL介绍与安装

--MYSQL介绍与安装

--MYSQL介绍与安装

-模块3、银行存取款机数据库的创建与维护

--1.3数据库的创建与维护

--银行存取款机数据库的创建与维护

-模块4、银行存取款机数据库的设计

--1.4.1数据库的概念模型设计

--1.4.2数据库的数据模型设计

--1.4.3数据库的关系规范化

--银行存取款机数据库的设计

学习情境二、创建和管理银行存取款机数据表

-模块1、表的创建

--2.1表的创建

--任务实施:银行存取款机表的创建

--表的创建

-模块2、表的管理

--2.2表的管理

--任务实施:银行存取款机表的管理

--表的管理

-模块3、索引

--2.3索引

--任务实施:银行存取款机索引

--索引

-实践小课堂:宠物电商管理平台数据库和表的创建

--实践小课堂:宠物电商管理平台数据库和表的创建

学习情境三、银行存取款机数据操纵

-模块1、银行存取款机数据插入、修改和删除

--3.1.1数据插入

--任务实施:银行存取款机数据插入

--3.1.2数据修改和删除

--任务实施:银行存取款机数据修改和删除

--实践小课堂:宠物电商管理平台数据插入

--银行存取款机数据插入、修改和删除

-模块2、银行存取款机简单查询

--3.2.1简单查询

--任务实施:银行存取款机简单查询

--实践小课堂:宠物电商管理平台简单查询

--3.2.2统计查询

--任务实施:银行存取款机统计查询

--实践小课堂:宠物电商管理平台条件查询

--银行存取款机简单查询和统计查询

-模块3、银行存取款机连接查询

--3.3连接查询

--任务实施:银行存取款机连接查询

--银行存取款机连接查询

-模块4、银行存取款机子查询

--3.4子查询

--任务实施:银行存取款机子查询

--实践小课堂:宠物电商管理平台多表查询

--银行存取款机子查询

-模块5、银行存取款机分类汇总与排序

--3.5分类汇总与排序

--任务实施:银行存取款机分类汇总与排序

--实践小课堂:宠物电商管理平台分类汇总和排序

--银行存取款机分类汇总与排序

-模块6、银行存取款机视图

--3.6.1视图的创建与管理

--任务实施:银行存取款机视图的创建与管理

--3.6.2视图的更新

--任务实施:银行存取款机视图的更新

--实践小课堂:宠物电商管理平台视图

--银行存取款机视图

学习情境四、银行存取款机数据库编程

-模块1、银行存取款机存储过程

--4.1.1创建和执行存储过程

--任务实施:银行存取款机创建和执行存储过程

--实践小课堂:宠物电商管理平台存储过程

--4.1.2事务

--任务实施:银行存取款机事务

--实践小课堂:宠物电商管理平台存储函数

--银行存取款机存储过程

-模块2、银行存取款机触发器

--4.2.1INSERT触发器

--任务实施:银行存取款机INSERT触发器

--实践小课堂:宠物电商管理平台INSERT触发器

--4.2.2UPDATE触发器

--任务实施:银行存取款机UPDATE触发器

--实践小课堂:宠物电商管理平台UPDATE触发器

--4.2.3DELETE触发器

--任务实施:银行存取款机DELETE触发器

--实践小课堂:宠物电商管理平台DELETE触发器

--银行存取款机触发器

教学情境五、银行存取款机数据库安全性

-模块1、MYSQL用户管理

--模块1、MYSQL用户管理

--MYSQL用户管理

-模块2、MYSQL权限管理

--模块2、MYSQL权限管理

--MYSQL权限管理

-模块3、MYSQL数据库的锁机制

--MYSQL数据库的锁机制

--MYSQL数据库的锁机制

-模块4、MYSQL备份和恢复

--模块4、MYSQL备份和恢复

--MYSQL备份和恢复

4.1.2事务笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。