什么是事务
事务是由一组DML语句组成,完成一个相对完整的功能,这一组DML语句要么全部执行,要么全部放弃执行。
数据库开启事务命令
start transaction 或者 begin 开启事务
commit 提交事务,提交未存储的事务
rollback 回滚事务,即撤销指定的sql语句(只能回退insert delete update语句)
savepoint 保留点 ,事务处理中设置的临时占位符 你可以对它发布回退。
事务的特性
事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性也简称ACID性。

(1)原子性:是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。就如原子是自然界最小颗粒,具有不可再分的特征一样。

(2)一致性:事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态。当数据库中只包含事务成功提交的结果时,数据库处于一致性状态。一致性是通过原子性来保证的。(双方账户的总和不能少也不能多)

(3)隔离性:各个事务的执行互不干扰,任意一个事务的内部操作对其他并发的事务,都是隔离的。(说白了,就是你做你的,我做我的!)

(4)持续性:持续性也称为持久性,指事务一旦提交,对数据所做的任何改变,都要记录到永久存储器中,通常是保存进物理数据库。(转账记录成功了,不能过一会变成了出错了)
隔离性:
客户端1:开启事务后进行操作,但是没有提交事务。
SQL基础---事务
客户端2:在客户端1操作的时候,查看account表格中的数据,发现没有改变,这就是隔离性。
SQL基础---事务

rollback:回滚事务,说白了就是撤销,但是注意:回滚必须在提交事务之前回滚,否则没卵用,

Example:Rollback 回滚事务

#先查看第一条记录

select * from testt where id =1;

SQL基础---事务
#这是表中的前10条数据:
SQL基础---事务
#开始事务

begin; 或者 start transaction;

#修改id为1的namee为中国人

update testt set namee=“中国人” where id = 1;

#查看一下现在开启了事务之后,更新数据的情况

select * from testt where id =1;

SQL基础---事务
注意:此时我去表里刷新表看到数据并未改变说明什么,说明现在事务还没提交,事务未提交自然不会作用于表。
SQL基础---事务
#回滚事务:

rollback;

#再次查看数据情况

select * from testt where id =1;

SQL基础---事务

结论:在回滚事务后发现回到了我们最初的状态,也就是说对sql操作做了撤销,但是注意只能对DML(INSERT 、 UPDATE 和DELETE 语句。)有用。

Example:savepoint 可用于把事务回退到这个点上,这是一个逻辑点;

#查看前两条数据

select * from testt where id ❤️;

SQL基础---事务

#开启事务

begin;

#执行操作

update testt set namee=“中国人” where id = 1;

#设置回退点

savepoint first
#savepoint就相当于是一个声明,后面是变量即回退点,在一个事务中可以设置多个

#继续执行操作

update testt set namee=“中国人” where id = 2;

#查看当前数据是什么状况
select * from testt where id<3;
SQL基础---事务
#开始回退到设置的那个点

rollback to first

#查看执行了rollback之后数据是什么状况

select * from testt where id<3;

SQL基础---事务

结论:设置回退点可以让我们在执行rollback to first之后回退到设置点的那里。

相关文章:

  • 2021-08-20
  • 2021-12-01
  • 2021-09-24
  • 2021-10-16
  • 2022-12-23
  • 2021-06-06
  • 2022-12-23
猜你喜欢
  • 2021-08-11
  • 2021-07-08
  • 2021-05-08
  • 2022-12-23
  • 2021-12-01
  • 2022-12-23
  • 2022-01-19
相关资源
相似解决方案