一、事务与事务特性
在关系型数据库内,事务是由一个SQL或一组SQL语句组成的逻辑处理单元。也就是说事务就相当于一个盛放SQL的容器,事务中的SQL要么全部执行成功,要么所有已经修改的操作都回滚到原来的操作,即一条SQL也不能执行成功。
事务的四大特性(ACID):
-
原子性:
事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行,当在执行过程中出现错误,就会回滚到事务开始前的状态。
-
一致性:
事务的执行结果必须是从一个一致性状态向另一个一致性状态的变更。比如,A和B两人共有100元,那么不管A转钱给B,或者B转钱给A,A+B的金额永远是100。
-
隔离性:
多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
-
持久性:
一个事务一旦提交,他对数据库的修改应该永久保存在数据库中,任何事务或故障都不应导致数据丢失。
二、MySQL事务的3种运行模式
隐式==自动
显式==手动
-
自动提交事务(隐式开启、隐式提交)
MySQL默认的事务运行模式,在每条SQL执行完毕之后自动commit提交。
-
隐式事务(隐式开启、显式提交)
由于在MySQL中是默认每条SQL都开启了事务的,并且每条SQL执行完毕之后都会自动提交,这样的话就只需要将自动提交关闭就可以了。