一、含义
事务:一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不执行
二、特点(ACID)
A 原子性:一个事务是不可再分割的整体,要么都执行要么都不执行
C 一致性:一个事务可以使数据从一个一致状态切换到另外一个一致的状态
I 隔离性:一个事务不受其他事务的干扰,多个事务是互相隔离的
D 持久性:一个事务一旦提交了则永久的持久化到本地
三、事务的使用步骤
-
隐式(自动)事务:没有明显的开启和结束,本身就是一条事务可以自动提交
比如insert、update、delete -
显式事务:具有明显的开启和结束
前提:必须先设置自动提交功能为禁用
SET autocommit=0;步骤1:开启事务 SET autocommit=0; START TRANSACTION;可选的,不执行也默认开启 步骤2:编写事务中的sql语句(select insert update delete ) 语句1, 语句2; ... 步骤3:结束事务 commit;提交事务 rollback;回滚事务 SAVEPOINT 节点名;设置保存点 演示事务的使用步骤: #开启事务 set autocommit=0; start transaction; #编写一组事务的语句 update account set balance=500 where username='张无忌'; update account set balance=1500 where username='赵敏'; #结束事务 commit; #演示savepoint的使用 set autocommit=0; delete from account where id=1;#被删除 savepoint a;#设置保存点 delete from account where id=2;#未被删除 rollback to a;#回滚到保存点
四、事务的隔离级别
脏读 不可重复读 幻读
read uncommitted: √ √ √
read committed: × √ √
repeatable read: × × √
serializable × × ×
mysql中默认第三个隔离级别 repeatable read
oracle中默认第二个隔离级别 read committed
查看隔离级别
selete @@transaction_isolation;
设置隔离级别
set session | global transaction isolation level 隔离级别;