(菜鸟也学大数据)20200818-MySQL之事务处理
一.什么是事务处理?
- 举例:用户A给用户B转账500元,当A账户-500时,B账户完成+500,这两个都操作成功,才算执行完成,但假设A账户-500后,出错了,B账户没有成功+500,这个时候,就需要执行数据回滚,撤销之前的操作,那么这个整个过程就模拟了事务处理的功能
- 解释:事务就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行
注意:MySQL事务处理只支持InnoDB和BDB数据表类型
二.事务的特性
- 原子性:事务是一个整体,不可分割
- 一致性:事务执行后要么一起成功,要么一起失败
- 隔离性:事务之间相互独立,互不影响
- 持久性:事务操作完成后的数据将保存,并长期存在
三.事务实现方法
- 查看事务:show variable like ‘event_scheduler’;
- 设置库支持事务:set global event_scheduler=on;
- 关闭自动提交模式:SET AUTOCOMMIT = 0; //数据库默认开启自动提交模式
- 开启自动提交模式:SET AUTOCOMMIT = 1;
事务开启流程
- 第一步:SET AUTOCOMMIT = 0;//关闭自动提交模式
- 第二部:START TRANSACTION;//开始一个事务,此处标记为事务起始点
- 第三步:[执行操作语句];
- 第四步:commit/rollback;//commit为保存事务修改,保存后将无法执行数据回滚,rollback为数据回滚操作,回滚至开启事务的位置
- 第五步:SET AUTOCOMMIT = 1;
事务执行流程图