一、什么是事务?
事务(Transaction)是将⼀组操作封装成⼀个执⾏单元(封装到⼀起),这⼀个执⾏单元要么⼀起执⾏成功,要么⼀起失败,不会出现执⾏“⼀半”的情况。
注意:数据库引擎InnoDB才支持事务,MyISAM不支持事务。
二、为什么要使用事务?
以银⾏转账为例,张三给 李四 转账,那么它的执⾏流程是这样的:
1、张三账户 -500 update account set money=money-500 where name = ‘张三’;
2、B李四账户 +500 update account set money=money+500 where name = ‘李四’;
如果执⾏了⼀半,断电了或者程序崩溃了,那么 A 账号的钱就永久消失了?那怎么办?⽤事务就可以解决这个问题,将这两个操作封装成⼀个执⾏单元,要么⼀起成功,要么⼀起失败。
张三给李四转 500 元,操作如下:
假如在执⾏完这个操作时,出现⽹络错误,或是数据库挂掉了,张三的阿⾥巴巴的账户会减少 500,但李四的账户上并没有增加500,那么这500元就凭空消失了。此时我们就要考虑运用事务解决问题。
三、事务的使用
事务的使⽤步骤有三个:
1.开启事务:start transaction(mysql8之前), begin(mysql8之后)
2. 执⾏多条 SQL
3. 提交事务:commit
4. 回滚事务:rollback