Home > Database > Mysql Tutorial > 数据库事务轻松走进数据库系列之十

数据库事务轻松走进数据库系列之十

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-07 15:12:20
Original
930 people have browsed it

事务的概念 :SQL 语句中一个执行单元,由一系列的 sql 语句组成。事务中的操作语句可作为一个不可分割的整体,要么全部执行,要么全部不执行。 事务好比把一系列的相关的SQL 语句捆绑在一起,一起执行,执行失败还可以人性化的回滚到操作之前,或者回滚到你

事务的概念:SQL 语句中一个执行单元,由一系列的sql语句组成。事务中的操作语句可作为一个不可分割的整体,要么全部执行,要么全部不执行。事务好比把一系列的相关的SQL 语句捆绑在一起,一起执行,执行失败还可以人性化的回滚到操作之前,或者回滚到你设置的保存点处。引入事务,使我们对数据库操作更加简单,且保证 了数据库的数据完整性。

在这个封装好的事务中,有完善的机能。

 

事务的分类:隐性事务,显式事务,自动提交事务。

 

各种事物的区分:

 

显式事务:有明显的sql语句标识:begin transaction开始和committransaction或者rollback transaction结束。

隐性事务(complicit transaction):1、在setimplicit_transaction on 语句之后进入隐性事务模式。

2、启动语句: altertableopendroptruncate tableinsertdeleteselectcreategrantrevokefetchupdate。首次执行上述语句后,自动进入隐性事务,知道出现结束事务语句。

自动提交事务:一个sql语句完成都算是一个自动提交事务。成功完成,则提交成功,没有成功执行sql语句,则回滚该语句。这就是自动提交事务的功能。

 

注意:一般有明显的标志语句就是显示事务,其次是一些隐式事务的启动语句,暗示着隐式事务,在没有显式事务和隐性事务的时候才是发生自动提交事务。

 

事务的主要作用避免数据的不一致。(触发器)

 

事务定义的语

数据库事务轻松走进数据库系列之十


为了更详细的了解事务是一系列SQL 语句的组成,我们再来看一个事务的简单例子。这个例子中,我们在部门表中把后勤部删除,同时也从员工表中把属于后勤部的员工给删除了,这是两天SQL 语句组成的事务,因为是一连串事件,所以封装在一个事务中,一起执行,这样就保证了数据的完整性,一致性。


数据库事务轻松走进数据库系列之十


事务回滚


事务在执行中,并不是每次都可以成功,由于一些原因,执行不成功,那么就是这个事务无法提交,为了保证数据的完整性,我们要执行事务回滚。打个比方,大家都在淘宝买东西,我们选好颜色,款式,数量后,提交订单,这就是一个事务,你的购物在店主那里都有记录,这就是一个事务,如果,你在操作过程中出现问题了,网页断开,或是停电,无法提交,那么你之前进行的操作也就不会保存,再次登入的时候,这些信息还需要填写。这就是事务回滚,他会自动回滚到操作之前。

语法:rollback transaction  transaction_name|savepointname

其中,transaction_name是回滚到事务操作之前。

savepointname 是回滚到特点的位置,叫做保存点,保存点需要手动设置。

设置保存点

save transaction savepointname


在整个事务中,顺序是很重要的,先执行什么,后执行什么。保存点设置就是如此,在执行完那步之后设置保存点,那么事务就会回滚到设置保存点之前的那个操作。

最后让我们来看一个完整的例子,有事务封装,有保存点的设置,这个事务提交失败后,会回滚到删除完后勤部的位置。

数据库事务轻松走进数据库系列之十

一下事务的完整操作:

数据库事务轻松走进数据库系列之十

分布式事务(distributed transaction

 

前边讲的事务是处理一个服务器的数据,涉及到多个服务器的时候用到一类新的事物——分布式事务。

使用分布式服务器需要首先启动MSDTC服务。

执行时将begin transaction换成begin distributed transaction即可。


Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template