rollback
在两次事务中分别测试,一次事务中输入全部正确的sql语句,另一次事务中包涵错误的sql语句,依次进行回滚可以发现,不管事务中内容怎么样,只要回滚了,事务对数据库造成的影响就会消失。
commit
开启事务,输入两条sql语句后,不执行commit,直接关掉窗口结果发现之前的sql语句并没有插入成功
再试一下,执行两条的sql语句,第二条sql错误,然后进行提交,发现结果如下:
可以得出结论:
- 没有commit的话,不管你sql语句写得多么的优雅,它并不会对数据库数据造成影响。
- 就算事务中有错误的sql语句,第一条sql语句造成的影响还是在的。也就是说,不管事务中的内容到底如何,只要我们commit了,其中正确的sql语句是会执行到的并对数据库产生影响的,不会自动回滚,还需要我们自己去提交一条rollback进行回滚的。之前还天真的以为只要是commit了,它就会自动判断,出现错误的话就自动回滚。