<
学习笔记 sql数据库 事务
>
上一篇

学习笔记 sql数据库 多表查询
下一篇

忘了 mybatis 吧,我 ktorm 养你啊!

事务


介绍

一系列操作需要 要不全部成功 要不全部失败

开启事务后,在提交之前,执行结果都只是在当前会话有效,是临时的

提交事务后,才会真正生效,持久更新

若其中有执行失败的,都应该回滚到开启时的状态


基本使用

// 开启事务
START TRANSACTION; -- MySQL
BEGIN TRANSACTION; -- SQLite
BEGIN; -- SQLite 可省略

// 提交事务
COMMIT;

// 回滚事务
ROLLBACK;

事务的提交

自动提交

// 查看事务默认提交方式 SELECT @@autocommit; – 1 代表自动提交, 0 代表手动提交

事务四大特征

不可分割,要么全部成功,要不全部失败

提交/回滚 后,持久更新

会话独立

30+30 = 40+20

隔离级别

并发,多个事务同时操作一批数据,会引发问题

隔离级别:

  1. READ-UNCOMMITTED 读未提交(产生的问题:脏读、不可重复读、幻读)
  2. READ-COMMITTED 读已提交(产生的问题:不可重复读、幻读) (Oracle默认级别)
  3. REPEATABLE-READ 可重复读(产生的问题:幻读) (MySQL默认级别)
  4. SERIALIZABLE 串行化 (直接给表加锁) (可以解决所有的问题) (SQLite默认级别)

特点:隔离级别越小 效率越高,隔离级别越大 安全性越高

// 查看隔离级别 SELECT @@tx_isolation;

// 设置隔离级别 (后面是级别) SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

Top
Foot