事务的创建
事务的分类:
- 隐式事务:事务没有明显的开启和结束事务的标记,如insert、update、delete语句
例如:查看变量
表示自动提交是默认开启的
2. 显式事务,具有明显的开启和结束事务的标志
前提:必须先设置自动提交功能为禁用
注:关闭只针对当前的会话有效,并不是永久生效
相关步骤:
步骤1、开启事务
set autocommit=0;
【start transaction;】可选的
步骤2、编写事务的sql语句(select、insert、update、delete)
语句1;
语句2;
……;
步骤3、结束事务
commit;提交事务
rollback;回滚事务
使用到的关键字
savepoint 节点名;
注:savepoint d;设置保存点
rollback to d;回滚到保存点
保存点只搭配rollback使用
查看数据:
删除3号被删了
删除2号被回滚,因此实际没被删
commit to 断点
rollback to 断点
案例:
1》开启事务
2》编写一组事务的语句
3》结束事务
最后查看数据:
若尝试回滚:
执行成功,但是再去查看并没有变回1000
因此可以认为,在结束事务之前这个数据只是保存到了内存,并不能提交到磁盘文件,只有执行了结束事务才能决定是提交到磁盘文件还是在撤销。(即有了结束标记才来决定到底是撤销还是继续提交到文件)