sql-事务

208 阅读2分钟

事物的介绍

  1. 事务:一条或多条 SQL 语句组成一个执行单元,其特点是这个单元要么同时成功要么同时失败。
  2. 单元中的每条 SQL 语句都相互依赖,形成一个整体。
  3. 如果某条 SQL 语句执行失败或者出现错误,那么整个单元就会撤回到事务最初的状态。
  4. 如果单元中所有的 SQL 语句都执行成功,则事务就顺利执行。

语法

-- 开启事务
start transaction;或者begin;
-- 回滚事务
rollback;
-- 提交事务
commit;
-- 练习
START TRANSACTION;
UPDATE  `first` SET money=money-100 WHERE `name`='杨晨';
UPDATE  `first` SET money=money+100 WHERE `name`='猫爬';

COMMIT;

事务的提交方式

MySQL默认自动提交,可以改成手动提交。

查看事务提交方式 SHOW VARIABLES LIKE '%AUTOCOMMIT%';

关闭自动提交SET AUTOCOMMIT=0;

开启自动提交SET AUTOCOMMIT=1;

事务的四大特征

  1. 原子性(Atomicity)

    原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

  2. 一致性(Consistency)

    一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态。也就是说一个事务执行之前和执行之后都必须处于一致性状态。(1000-100)+(1000+100)=1000+1000

  3. 隔离性(Isolocation)

    隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务。 不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。(线程安全?)

  4. 统一性(Durability)

    持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的。 即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

事务隔离界别

image.png image.png 查询数据库隔离级别 SHOW VARIABLES LIKE '%ISO%'; 修改数据库隔离级别 SET SESSION TRANSACTION ISOLATION LEVEL 级别字符串;