mysql-事务

事务

什么是事务

​ 事务就是一系列sql语句的组合,是一个整合

事务的特点

  • 原子性: 指的是这个事务中的sql语句是一个整体,不能拆分,要么都执行,要么全部失败
  • 一致性: 事务执行结束后,表的关联关系一定是正确的,不会发送数据错乱
  • 隔离性: 事务之间相互隔离,数据不会相互影响,及时操作了同一个表,本质就是加锁,根据锁的粒度不同分为几个隔离级别;
  • 持久性: 事务执行成功后,数据将永久保存,无法恢复

事务的应用场景:

​ 转账操作:

	* 先把转出账号的钱扣掉,
	* 再把转入账号的余额做增加操作

如果这两步操作在完成第一步操作时,突然中断了,那么,转出账号的钱被扣掉了,但是转入账号没有接收到钱,就会导致钱无缘无故丢失,因此,我们就需要把这两步操作绑定在一块,如果其中一步没有成功,那整个都执行失败,确保账号数据正确.

# 开启事务
start transaction 
添加sql 语句......
savepoint a  # 保存点, 可以在rollback 指定回滚到某一个savepoint,也就回滚一部分
rollback  # 回滚操作,即撤销没有提交之前的所有操作,如果已经提交,就恢复不了
commit # 提交事务,一旦提交就持久化了

# 何时回滚   当一个事务执行过程中出现了异常时  我们可以捕获异常
# 何时提交   当事务中所有语句都执行成功时
create table account(name char(10),money float);
insert into account values("张三丰",5000),("张无忌",100);

# 开启事务
start transaction;
sql语句....
update account set money = money-100 where name ="张三丰";
update account set money = money+100 where name ="张无忌";
# 提交 或者回滚 rollback,只要提交完成,就不能回滚了
commit; 
posted @ 2019-09-02 09:24  raynduan  阅读(202)  评论(0编辑  收藏  举报