MYSQL中的事务

我们来看一下住户退房这个业务需要做什么事情?

  1. 要更新该用户的离开时间、总金额
  2. 需要更新用户所住的房屋的状态为空闲

由此可见,以上需要两个SQL来实现。

 

发现问题:若某一个SQL语句执行出错的情况下,另外一个SQL结果却已经更新到数据库,造成了数据的不完整。

如何解决:事务

l  事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行

l  事务用来管理insert,update,delete语句

1.1.1. 事务的特性

一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)

1、事务的原子性:一组事务,要么成功;要么撤回。

2、稳定性 : 有非法数据(外键约束之类),事务撤回。

3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。

4、可靠性:软、硬件崩溃后,数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得,

1.1.2. MYSQL 事务处理主要有两种方法:

1、用 BEGIN, ROLLBACK, COMMIT来实现

BEGIN 开始一个事务

ROLLBACK 事务回滚

COMMIT 事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

SET AUTOCOMMIT=0 禁止自动提交

SET AUTOCOMMIT=1 开启自动提交

posted @ 2017-09-21 14:18  成那个林  阅读(132)  评论(0编辑  收藏  举报