内容正文:
干锋教育
第11章数据库事务
事务的管理
。
·分布式事务
MySQL
目录
MySQL
事务的管理
口点击查看本小节知识架构
分布式事务
口点击查看本小节知识架构
学习目标
MySQL
理解事务
掌握事务的回滚和
2
掌
属性
理解
掌握
掌握
掌握事务的隔
4
掌握分布式事彭
离级别
3
as
知识架构
MySQL
11.1事务的管理
→返回且录
11.1.1…。事务的概念和使用
11.1.2
事务的回滚
11.1.3
事务的属性
11.1.4…0
事务的隔离级别
11.1事务的管理
MySQL
11.1.1事务的概念和使用
·在现实生活中,转账是很常见的操作,这实际上就是数据库中两个账户间的数据操
作。例如,账户A给账户B转账100元,就是账户A的金额减去100,账户B的金额加
上100,这个过程需要使用两条SQL语句完成操作,但是,若其中一条SQL语句出
现异常没有执行,则会导致两个账户的金额不同步,数据就会出现错误。
·为了防止上述情况的发生,在MySQL中引入了事务。事务是指数据库中的一个操
作序列,它由一条或多条SQL语句所组成,这些SQL语句不可分割,只有当事务中
的所有$QL语句都被成功执行后,整个事务引发的操作才会被更新到数据库,如果
有至少一条语句执行失败,所有操作都将会被取消。
·在使用事务前,首先要开启事务,SQL语句如下。
START TRANSACTION:
·以上语句用于开启事务,事务开启后就可以执行SQL语句。
11.1事务的管理
MySQL
11.1.1事务的概念和使用
在SQL语句执行完成后需要提交事务,SQL语句如下。
COMIT:
·以上语句用于提交事务,在ySQL中SQL语句是默认自动提交的,而事务中的操
作语句都需要使用COMMIT语句手动提交,提交完成后事务才会生效。如果不想
提交事务,ROLLBACK语句可以回滚事务,SQL语句如下。
ROLLBACK:
·以上语句用于事务回滚,但该语句只能回滚未提交的事务操作,不能回滚已提交的
事务操作。
·接下来通过具体案例演示转账的事务操作,首先需要创建一个账户表account。.
mysgl>CREATE TABLE account
->
id INT PRTMARY KEY.
-》
name VARCHAR (30),
->
money FI.OAT
-◇):
Query OK,0 rows affected (0.16 scc)
11.1事务的管理
11.1.1务的概念和使用
·在account表创建完成后向表中插入数据。
mysq1〉1NERT INO account MUES
->(1,'A',1000),
-〉(2,'B',1000),
->(3,'C',1000);
Qucry O,3rows affcted(0.06scc)
ecords:3-Duplicates:Warnins:o
·以上执行结果证明数据插入完成。然后查看account表中的数据。
mysq1〉SHLECT*FBOM accoumt;
3rows in set(0.02sec
·从以上执行结果可以看出,总共有3个账户,存款金额都为1000。接下来通
过具体案例演示如何实现转账功能。
11.1事务的管理
MySQL
11.1.1事务的概念和使用
·MySQL是默认自动提交事务,SHOW VARIABLES语句可以查看系统变量
autocommit的值。
mysql>SHOW VARIABLES LIKE autocommit';
Variable name Value
autocommit
10W
1 row in set (0.00 sec)
·从以上执行结果可看出,MySQL事务自动提交是开启的状态。如果进行事务操作,
需要将自动提交关闭。
mysql>SET autocommit =0;
Query OK,0 rows arfected (0.00 sec)
·以上执行语句中,0代表OFF,反之1代表ON。
11.1事务的管理
MySQL
11.1.1事务的概念和使用
·通过SHOW VARIABLES语句验证自动提交是否关闭。
mysql>SHOW VARIABLES LIKE autocommit':
Variable namc Valuc
autocommit
OFF
1 row in set (0.00 sec)
·从以上执行结果可以看出,MySQL的自动提交事务已关闭。
11.1事务的管理
MySQL
11.1.1事务的概念和使用
·然后通过事务操作实现账户A给账户B转账100元。
mysql>START TRANSACTION:
Query OK,0 rows affected (0.02 sec)
mysql>UPDATE accou