事务:
默认事务自动提交
触发时机:
DML执行:数据库操作语句的执行,例如insert,update,delete
DDL执行:数据定义语句
SELECT查询后结果集关闭后
存储过程执行后(数据结果集返回后,事务关闭)
事务隔离4大级别:
读未提交
读已提交
可重复读
可串行化
不同隔离级别可能出现的问题
脏读:A事务读,B事务写未提交,A事务能读取B事务没有提交的数据。
不可重复读:A事务读一行记录,B事务修改这条记录,A事务两次读取记录结果不一样。
幻读:A事务第一次读所有行记录,B事务添加记录提交,A事务会读到新增这一行记录。
注意:测试4种不能隔离级别,可能发现的问题时,一定记得把Mysql自动提交关闭
隔离级别指令:
设置:
SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]
查询
SELECT @@TX_ISOLATION
自动提交指令:
关闭:
SET AUTOCOMMIT=1
开启:
SET AUTOCOMMIT=0