一、MySQL 中事务的理解
二、演示事务的基本使用
DROP TABLE t27; -- 1.创建一张测试表 CREATE TABLE t27( id INT, `name` VARCHAR(32) ); -- 2.开启事务 START TRANSACTION -- 3.设置保存点 SAVEPOINT a -- 执行DML操作 INSERT INTO t27 VALUES(100,'tom'); SELECT * FROM t27; SAVEPOINT b -- 执行DML操作 INSERT INTO t27 VALUES(200,'jack'); -- 回退到b ROLLBACK TO b -- 继续回退 a ROLLBACK TO a -- 如果这样,表示直接回退到事务开始的状态 ROLLBACK
三、回退事务和提交事务的介绍
四、MySQL事务细节讨论
对应的SQL语句如下
-- 讨论 事务细节 INSERT INTO t27 values(300,'milan'); -- 自动提交 commit SELECT * FROM t27; -- 如果开始一个事务,你没有创建保存点,你可以执行rollback -- 默认就是回退到你事务开始的状态 START TRANSACTION INSERT INTO t27 VALUES(400,'King'); INSERT INTO t27 VALUES(500,'scott'); ROLLBACK -- 直接回退到事务开始的状态 COMMIT -- INNODB 存储引擎支持事务,MyISAM不支持 -- 开启事务 START TRANSACTION 也可以这样写SET autocommit=off SET autocommit=off INSERT INTO t27 VALUES(400,'King'); INSERT INTO t27 VALUES(500,'scott'); SELECT * FROM t27; ROLLBACK
五、MySQL中的事务隔离级别
1、事务隔离级别的介绍
2、脏读,不可重复度,幻读的理解
3、事务的4隔离级别如下
4、查看与设置隔离级别
对应的SQL代码如下
-- 演示mysql事务的隔离级别 -- 1.开了两个mysql的控制台 -- 2.查看当前mysql的隔离级别 SELECT @@transaction_isolation; -- +-------------------------+ -- | @@transaction_isolation | -- +-------------------------+ -- | REPEATABLE-READ | -- +-------------------------+ -- 3.把其中一个控制台的隔离级别设置 READ-UNCOMMITTED SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; CREATE TABLE `account`( id INT, name VARCHAR(32), money INT ); -- 查看当前会话隔离级别 SELECT @@transaction_isolation; -- 查看系统当前隔离级别 SELECT @@global.transaction_isolation; -- 设置当前会话隔离级别 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; -- 设置系统当前隔离级别 SET GLOBAL TRANSACTION ISOLATION LEVEL [你设置的级别];
六、事务ACID的特性