事务(transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元。
过程:事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
原理:Mysql允许将事务统一进行管理(存储引擎INNODB),将用户所做的操作,暂时保存起来,不直接写入数据库,等到用于确认结果之后再进行操作。
自动事务
执行sql后,直接写入数据库。默认事务是自动提交,也可使用手动事务。
查看事务设置:show variables like 'autocommit';
关闭自动事务:set autoconmit = off;
注意: 一旦自动事务关闭,那么需要用户提供是否同步的命令
commit:提交(同步到数据表:事务也会被清空)
rollback:回滚(清空之前的操作,不要了)
事务没有提交的对比查看:在执行事务端的客户端中,系统在进行数据查看的时候会利用事务日志中保存的结果对数据进行加工。
注意: 通常不会关闭自动事务。
手动事务
1、 start transaction; //开启事务:从这条语句开始,后面的所有语句都不会直接写入到数据表(保存在事务日志中)
2、 事务处理:执行的sql
3、 事务提交:commit/rollback,到这个时候所有的事务才算结束
commit
rollback
回滚点
当有一系列事务操作时,而其中的步骤如果成功了,没有必要重新来过,可以在某个点(成功),设置一个记号(回滚点),然后如果后面有失败,那么可以回到这个回滚点
增加回滚点:savepoint name; //字母数字和下划线构成
回到回滚点:rollback to name; //回滚点之后的所有操作失效