方式一:
set @@autocommit = 0; // 设置为手动提交 // 事务执行成功后 调用commit提交事务 commit; // 如果执行失败 使用rollback回滚 rollback;
方式二:
start transaction 或 begin; -- 开启事务 commit; rollback;
事务隔离级别:
- 未提交读,事务中发生了修改,即使没有提交,其他事务也是可见的,比如事务A修改了数据但为提交,事务B看到了这个修改,事务A发生回滚,事务B看到的仍然是修改后的数据,可能会导致脏读、不可重复读、幻读。
- 提交读,对于一个事务从开始直到提交之前,所做的任何修改是其他事务不可见的,举例事务A修改了数据并提交,提交之前事务B读取了数据,提交之后事务B又读取数据,前后两次读取不一致;可以阻止脏读,但是可能导致不可重复读或幻读。
- 重复读,就是对一个记录的多次读取是相同的;可以阻止脏读和不可重复读,但幻读仍有可能发生
- 可串行化读,在并发情况下,和串行化的读取的结果是一致的,没有什么不同;该级别可以防止脏读、不可重复读以及幻读。
-- 查看事务隔离级别 select @@transaction_isolation; -- 设置事务隔离级别 set [session | global] transaction isolation level [read uncommitted | read committed | repeatable read | serializable]
session:针对当前会话窗口有效
global:针对所有会话窗口有效
标签:事务,读取,幻读,修改,脏读,提交,操作 From: https://www.cnblogs.com/WTSRUVF/p/17485987.html