要么都成功,要么都失败。

在一个事件中的事:从通知开启事务,到提交事务之间,任何一句语句有错误,则哪一句语句都不应该提交。

1、事务的几个状态

1、开启事务

2、事务提交 commit()。在做事务提交和回滚前,关键的头尾是:(1)通知开启事务,false是开启(connection.setAutoCommit(false);) (2)提交或回滚(提交写在try部分,回滚写在catch中)

3、事务回滚 rollback()。事务一旦提交(commit)了,就无法回滚(rollback)了。所以,应该在提交之前判断,如果崩了就不要提交,直接回滚。

4、关闭事务

转账:

A:1千块

B:1千块

A --> B: A(900)、B(1100)

不能出现A转给了B100块钱,A成为900,但是系统崩溃了,B还没收到100块钱,出现了A900块钱,B1000块钱的情况。

1、搭建环境,进行测试

事务(操作数据库,判断SQL语句是提交还是回滚)

1 Create TABLE account(
2     id INT PRIMARY KEY auto_increment,
3     `name` VARCHAR(40),
4     money FLOAT
5 );
6 INSERT INTO account(`name`,money) VALUES ('A',1000);
7 INSERT INTO account(`name`,money) VALUES ('B',1000);
8 INSERT INTO account(`name`,money) VALUES ('C',1000);
View Code

相关文章:

  • 2021-10-15
  • 2021-07-05
  • 2022-02-18
  • 2022-02-09
猜你喜欢
  • 2022-01-20
  • 2021-08-13
  • 2022-01-23
  • 2021-11-01
  • 2022-12-23
相关资源
相似解决方案