全国咨询/投诉热线:400-618-4000

mysql中事务怎么用?【运维培训】

更新时间:2020年06月03日14时54分 来源:传智播客 浏览次数:

1、场景

一组sql(增删改)要么都执行,要么都不执行。

场景:A有10000元

B有10000元

A向B转账500,是两条更新

update bill set 余额=余额-500 where A;

update bill set 余额=余额+500 where B;

这两条数据必须要么都执行,要么都不执行,如果执行了一半,发生问题,那么执行过的sql要回滚。

2、事务(transaction)的讲解

什么是事务?

事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。

事务的优点

(1) A(atomicity) 原子性。事务里面的操作,要么全部成功执行,要么全部失败回滚,不可以只执行其中的一部分。

(2) C(consistency) 一致性。一个事务的执行不应该破坏数据库的完整性约束。

(3)I(isolation) 隔离性。通常来说,事务之间的行为不应该互相影响。

(4)D(durability) 持久性。事务提交之后,需要将提交的事务持久化到磁盘。即使系统崩溃,提交的数据也不应该丢失。

使用事务的好处

在修改数据的操作中保持数据的完整性.

事务的使用

语法

开启事务: start  transaction  或 begin [work]

sql语句的执行

提交事务commit

回滚事务:rollback;

在事务开始和结束之间的这些sql,就在同一个事务中。

例题

创建表并且插入数据

创建表:

create table info(
    id int auto_increment primary key,
    name varchar(5),
    money decimal(10,2)
);
insert into info values(1,'张三',1000);
insert into info values(2,'李四',1000);

例题:让张三给李四成功转50块

开启事务:start transaction;

mysql事务1


让张三少50块,李四多50块

update info set money=money-50 where id=1;
update info set money=money+50 where id=2;

mysql事务2


查询sql执行的结果

mysql事务3


重新打开一个mysql客户端查看数据;

mysql事务4


数据并未发生变化

提交事务:commit

1591157239703_mysql事务05.jpg


另一个客户端中的数据

1591157249447_mysql事务06.jpg


例题:让张三给李四转50块失败

1591157260639_mysql事务07.jpg


另一个客户端的数据:

1591157272217_mysql事务08.jpg


最后执行回滚,转账失败

1591157288286_mysql事务09.jpg


总结:事务保持数据的完整性,具有原子性。


猜你喜欢:

服务器是什么?服务器空间又是什么?

DNS服务器是什么?DNS劫持又是什么?

什么是域名?域名和URL有什区别?