Java Web 2 数据库 2.8 事务

Java Web

【黑马程序员新版JavaWeb基础教程,Java web从入门到企业实战完整版】

2 数据库

文章目录

      • Java Web
      • 2 数据库
        • 2.8 事务
          • 2.8.1 事务简介
          • 2.8.2 事务操作
          • 2.8.3 事务四大特征

2.8 事务

2.8.1 事务简介

数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败。

事务是一个不可分割的工作逻辑单元。

Java Web 2 数据库 2.8 事务_第1张图片

【基本语法】

-- 开启事务
start transaction;
或者 begin;

-- 提交事务
commit;

-- 回滚事务
rollback;

【举个栗子】

drop table if exists account;

-- 创建账户表
create table account(
	id int primary key auto_increment,
	name varchar(10),
	money double(10,2)
);

-- 添加数据
insert into account(name , money) values('张三',1000),('李四',1000);

select * from account;

Java Web 2 数据库 2.8 事务_第2张图片

进行转账操作

-- 转账操作

-- 1. 查询李四的余额

-- 2. 李四金额 - 500
update account set money = money - 500 where name = '李四';
-- 3. 张三金额 + 500
update account set money = money + 500 where name = '张三';

Java Web 2 数据库 2.8 事务_第3张图片

查询

Java Web 2 数据库 2.8 事务_第4张图片

正常情况下,操作成功了。

现在模拟一个异常。

Java Web 2 数据库 2.8 事务_第5张图片

现在减金额成功了,但是加金额没有成功

Java Web 2 数据库 2.8 事务_第6张图片

2.8.2 事务操作

【使用事务解决这个问题】

Java Web 2 数据库 2.8 事务_第7张图片

查询一下

Java Web 2 数据库 2.8 事务_第8张图片

可以看到开启事务后,操作是临时的,只有当前查询窗口能够查得到。

– 回滚事务

Java Web 2 数据库 2.8 事务_第9张图片

再查一次

Java Web 2 数据库 2.8 事务_第10张图片

回滚之后,数据就没有产生变化了。

如果没有问题的,进行提交事务

Java Web 2 数据库 2.8 事务_第11张图片

提交事务后,就相当于持久性更改了。

2.8.3 事务四大特征

【ACID】

  • 原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败
  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态
  • 隔离性(lsolation) :多个事务之间,操作的可见性
  • 持久性 (Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

你可能感兴趣的:(非零基础自学Java,数据库,java,sql)