相比oracle的事务处理,Mydql相对还是简单一点的,但是事务作为一项重要的安全机制在数据库里面是必不可少的,特别是里面的事务回滚机制非常的有用,不多说了,先说一下mysql的事务处理:
Mysql简单的回滚:
第一步:开始事务:start transaction;
第二步:执行dml等其他的变化操作。
第三步:混滚到开始事务之前状态: rollback;
这样的话在执行完毕之后就发现之前的一些操作没有执行成功。只有commit提交之后才会真正的把数据提交。但是,还要考虑下面的两种情况,一种是服务关闭的情况,这样我们的数据回滚在没有提交的情况下是有真正的去执行,还有就是回滚是能够用一次,再次使用虽然不报错,但是不起任何作用。
如果你会说了,我想在一次事务中国实现多次回滚怎么办,这里你可以使用设置保存点:
在上面的第二步中,你可以这样一下: savepoint 保存点1(名称而已);
然后你继续执行dml,到了耨一个地方继续savepoint 保存点2;
你是不是想通过rollback to 保存点的方式会滚到之前的状态。但是,不得不告诉你,旺旺想想的和显示的情况并不是一模一样,你会发现只能够滚滚到第一个保存点,其他的保存点会提示不存在!
Oracle的事务处理:
Oracle是不用说明开启事务的,针对dml语句,当你设置保存点,接下来的步骤如上返回到保准点同样的用commit提交事务。
但是,我这里就总结出了一个重要的原则:事务回滚只能反方向一直逆行,这个过程已然不可逆。除非提交结束事务。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/mycodedream/article/details/47998175