事务概念引入
现实生活中,我们往往经常会进行转账操作,转账操作可以分为两部分来完成,转入和转出。只有这两部分都完成了才可以认为是转账成功。在数据库中,这个过程是使用两条语句来完成的,如果其中任意一条语句出现了异常没有执行,则会导致两个账号的金额不同步,造成错误。
为了防止上面可能出现的情况,MySQL引入了事务,所谓事务就是针对数据库的一组操作,它可以由一条或多条SQL语句组成,同一个事务的操作具备同步的特点,如果其中有一条语句不能执行的话,那么所有的语句都不会执行,也就是说,事务中的语句要么都执行,要么都不执行。
在使用数据库时候需要使用事务,必须先开启事务,开启事务的语句具体如下:start transaction;
即:
上面语句是用来开启事务,事务开启之后就可以执行SQL语句,SQL语句执行成功之后,需要使用相应语句提交事务,提交事务的语句如下:commit;
需要注意的是,在MySQL中直接书写SQL语句都是自动提交的,而事务中的操作语句需要使用commit
语句手动提交,只有事务提交后其中的操作才会生效。
如果不想提交事务,我们还可以使用相关语句取消事务(也称回滚),具体语句如下:rollback;
注: rollback
语句只能针对未提交的事务执行的回滚操作,已经提交的事务是不能回滚的。
事务的四个基本要素(ACID)
ACID,指数据库事务正确执行的四个基本要素的缩写。包含: 原子性
、一致性
、隔离性
、持久性
。
如何使用事务?
执行效果如下:
演示使用事务来实现转账功能:
首先开启一个事务,然后通过update语句将a账户的100元转给b账户,然后提交事务,具体语句如下:
执行效果如下: