事务操作

方式一:

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:针对所有会话窗口有效

 

posted @ 2023-06-16 16:50  WTSRUVF  阅读(22)  评论(0)    收藏  举报