码迷,mamicode.com
首页 > 其他好文 > 详细

事务的理解及应用

时间:2015-01-29 09:24:14      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:事务   数据库   

1、事物的理解:

    事务(Transaction)是并发控制的基本单位。指作为单个逻辑工作单元执行的一系列操作,而这些逻辑工作单元需要具有原子性,一致性,隔离性和持久性四个属性,统称为ACID特性。

     Atomic(原子性):事务中的所有元素作为一个整体提交或回滚,事务的个元素是不可分的,事务是一个完整操作。

     Consistency(一致性):只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。事物完成时和事物开始之前,数据存储中的数据处于一致状态。保证数据的无损。

     Isolation(隔离性):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。

     Durability(持久性):事务结束后,事务处理的结果必须能够得到固化。它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。


2、事物的应用

    在数据库中要完成事物的操作,一般是将事物写在存储过程中。其具体的应用格式见下面的程序:

    create procedure mon --创建存储过程,定义几个变量

    @toID int,    --接收转账的账户

    @fromID int ,  --转出自己的账户

    @momeys money --转账的金额

    as

    begin tran --开始执行事务

        update bb setmoneys=moneys-@momeys where ID=@fromID -执行的第一个操作,转账出钱,减去转出的金额

        update bb setmoneys=moneys+@momeys where ID=@toID --执行第二个操作,接受转账的金额,增加转来的金额

 

        if@@error<>0 --判断如果两条语句有任何一条出现错误

        begin 

rollback –开始执行事务的回滚,恢复的转账开始之前状态

return 0

   end

go

 

else   --如何两条都执行成功

begin 

commit --执行这个事务的操作

return 1

        end

go


总结:其实在应用中可以将事物理解成一句话:写在事物中的程序,要么全部执行成功,要么不执行或者执行错误后回滚到执行事物之前的状态。

事务的理解及应用

标签:事务   数据库   

原文地址:http://blog.csdn.net/u010927139/article/details/43266167

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!