事务

事务

事务及其特征

  • 事务(Transaction)是用来维护数据库完整性的,它能够保证一系列的MySQL操作要么全部执行,要么全不执行。

  • 事务(Transaction)指的是一个操作序列,该操作序列中的多个操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位,由DBMS(数据库管理系统)中的事务管理子系统负责事务的处理。

  • 默认一句SQL语句就是一个事务

  • 事务的特征(ACID)

    • 原子性(Atomicity)

      • 事务中的所有操作可以看做一个原子,事务是应用中不可再分的最小的逻辑执行体。要么全部执行,要么全不执行。
    • 一致性(Consistency)

      • 一致性是指事务执行的结果必须使数据库从一个一致性状态,变到另一个一致性状态。
    • 隔离性(Isolation)

      • 隔离性是指各个事务的执行互不干扰,任意一个事务的内部操作对其他并发的事务,都是隔离的。
    • 持久性(Durability)

      • 持久性指事务一旦提交,对数据所做的任何改变,都要记录到永久存储器中

事务的开启\回滚\提交

  • 手动开启事务start transaction;
    • 开启事务后,在回滚或提交之前,都是操作的缓存中的数据,而不是数据库中的真实数据
  • 回滚rollback;
    • 执行回滚后,从开始事务到回滚语句之间做的所有操作,都不会操作数据库中的真实数据
  • 提交commit;
    • 执行提交后,从开启事务到提交语句之间执行的所有操作,都将一次性全部执行到真实数据库数据中

代码示例

-- 事务
-- 创建账户表
create table account(
	id int primary key auto_increment,
	uname varchar(10) not null,
	balance double
);

-- 查看
select * from account;

-- 插入数据
insert into account values (null, "lili", 2000), (null, "xiaogang",2000);

-- 转账
update account set balance = balance - 200 where id = 1;
update account set balance = balance + 200 where id = 2;
-- 默认一条一句是一个事务,所以上面的操作是两个事务


-- 必须上面的两个操作,控制在一个事务中
-- 手动开启事务
start transaction;

update account set balance = balance - 200 where id = 1;
update account set balance = balance + 200 where id = 2;

-- 手动回滚,刚刚执行的操作全部取消
rollback;

-- 手动提交事务
commit;
-- 在回滚和提交之前,都是操作的缓存中的数据,而不是数据库中的真实数据

posted @ 2021-01-26 23:48  殃奕  阅读(69)  评论(0编辑  收藏  举报