MySQL事务控制

MySQL高级进阶

1.了解什么是事务控制
2.熟悉事务的特性
3.掌握事务控制的作用【重点】

什么是事务?

在这里插入图片描述

事务的四个特性

在这里插入图片描述

原子性:原子,不可再分割

MySQL的事务控制

在这里插入图片描述

实际演练:银行转账的例子

创建表格
create table bank_account(
	id int not null auto_increment primary key,
	name varchar(30) comment '姓名',
	balance decimal(18, 2) comment '账户余额'
);


insert into bank_account(id, name, balance) values(1, '张三', 0);
insert into bank_account(id, name, balance) values(2, '李四', 0);

update bank_account set balance=balance+1000 where id=1;
====================================================================================
查看自动提交是否开启,默认为1,开启状态。
select @@autocommit;
开启一个事务
start transaction;
张三给李四转账100
update bank_account set balance=balance-100 where id=1;
update bank_account set balance=balance+100 where id=2;
提交事务
commit;
查看表的状态,发现已经更改完毕
select * from bank_count;

mysql> select * from bank_account;
+----+------+---------+
| id | name | balance |
+----+------+---------+
|  1 | 张三 |  900.00 |
|  2 | 李四 |  100.00 |
+----+------+---------+
2 rows in set (0.00 sec)


又开启了一个事务
start transaction;
想进行再转账100的业务
update bank_account set balance=balance-100 where id=1;
update bank_account set balance=balance+100 where id=2;
发现出现错误了,想取消这个事务,那么就使用rollback回滚。
rollback;
再次查看,发现未更改
mysql> select * from bank_account;
+----+------+---------+
| id | name | balance |
+----+------+---------+
|  1 | 张三 |  900.00 |
|  2 | 李四 |  100.00 |
+----+------+---------+
2 rows in set (0.00 sec)
发布了82 篇原创文章 · 获赞 19 · 访问量 4635

猜你喜欢

转载自blog.csdn.net/ABCisCOOL/article/details/105366427