MySQL(20):事务简介 和 事务的四个特性

1. 事务概念引入:数据库

  现实生活中,咱们每每常常会进行转帐操做,转帐操做能够分为两部分来完成,转入和转出。只有这两部分都完成了才能够认为是转帐成功。在数据库中,这个过程是使用两条语句来完成的,若是其中任意一条语句出现了异常没有执行,则会致使两个帐号的金额不一样步,形成错误。并发

  为了防止上面可能出现的状况,MySQL引入了事务,所谓事务就是针对数据库的一组操做,它能够由一条或者多条SQL语句组成,同一个事务的操做具有同步的特色,若是其中有一条语句不能执行的话,那么全部的语句都不会执行,也就是说,事务中的语句要么都执行,要么都不执行。spa

在使用数据库时候须要使用事务,必须先开启事务,开启事务的语句具体以下:code

  start transaction;blog

即:事务

上面语句是用来开启事务,事务开启以后就能够执行SQL语句,SQL语句执行成功以后,须要使用相应语句提交事务,提交事务的语句以下:ci

  commit;rem

须要注意的是,在MySQL中直接书写的SQL语句都是自动提交的,而事务中的操做语句须要使用commit语句手动提交,只有事务提交后其中的操做才会生效。同步

若是不想提交事务,咱们还可使用相关语句取消事务(也称回滚),具体语句以下:it

  rollback;

须要注意的是,rollback语句只能针对未提交的事务执行的回滚操做,已经提交的事务是不能回滚的。

 

 

2. 事务操做具备严格的定义,它必须知足ACID

ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

(1)原子性: 原子性是指事务是一个不可再分割的工做单位,事务中的操做要么都发生,要么都不发生。

(2)一致性:一致性是指在事务开始以前和事务结束之后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

(3)隔离性:隔离性是指并发的事务是相互隔离的。即一个事务内部的操做及正在操做的数据必须封锁起来,不被企图进行修改的事务看到 。

(4)持久性:持久性是指在事务完成之后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚。 即便出现了任何事故好比断电等,事务一旦提交,则持久化保存在数据库中

 

3. 相信经过上面的讲解,咱们对事务有了一个简单的了解,接下来咱们经过一个转帐的案例演示如何使用事务。

(1)演示以前准备工做:

具体SQL语句以下:

create database chapter06; use chapter06; create table account( id int primary key auto_increment, name varchar(40), money float ); insert into account(name,money) values('a',1000); insert into account(name,money) values('b',1000);  

执行效果以下:

 

(2)接下来咱们使用事务来演示如何实现转帐功能:

首先开启一个事务,而后经过update语句将 a帐户的100元 转给 b 帐户,而后最后提交事务,具体语句以下:

start transaction; update account set money=money-100 where name='a'; update account set money=money+100 where name='b'; commit;

执行效果以下:

相关文章
相关标签/搜索