1-什么是事务:
事务就是一种机制,一个操作序列,包含了一株数据操作的命令,事务将这个命令一起提交,这个命令要么一起成功要么一起失败
比如:淘宝买东西我支付宝总钱100元,商家总余额200元,然我50买他的东西,所以我的支付宝应该减50,商家加50,写代码时候如果我的支付宝减过了50那么商家的再加50是没错的,但是如果我减了然后出现异常了商家还没有加50,那么就会出现我钱减少了商家钱不变的情况。
Mysql默认就自带事务,流程就是:开启事务----(出现异常就是回滚一起失败)没有异常-----提交事务。 代码:开启事务-start transaction 提交事务(如果一切正常)-commit 回滚事务(如果异常)-rollback
MySQL的手动提交事务 set autocommit = 0; -- 0:OFF 1:ON 这个可以修改是否更改自动提交事务为自动的还是手动的,这个修改只是一次性的,就是只是针对这次链接有用,如果关闭连接再次打开链接则就又变成自动的了。 show variable like '%commit%'是显示当前事务为自动还是手动
start transaction; -- 手动开启事务
update account set money = money-100 where name='a'; -- 执行减100命令
update account set money = money+100 where name='b'; -- 执行加100命令
commit; --提交事务,如果出现异常就两条一起回滚
如果commit了以后那么就是永久性的改变不可回滚了。事务只是针对DML的也就是增删改
事务的四大特性(面试高频):