zoukankan      html  css  js  c++  java
  • SQL中的事物【转】

    来源于:http://www.cnblogs.com/zhuifengnianshao/archive/2010/11/24/1886939.html
    
    事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。
    通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。
    在sql server+ .net 开发环境下,有两种方法能够完成事务的操作,保持数据库的数据完整性;
    一个就是用sql存储过程,另一个就是在ADO.NET中一种简单的事务处理;
    现在通过一个典型的银行转账的例子来说明一下这两个例子的用法
    我们先来看看sql存储过程是如何来完成事务的操作的:
    首先创建一个表:
    create database aaaa --创建一个表,包含用户的帐号和钱数
    go
    use aaaa
    create table bb
    (
     ID int not null primary key,  --帐号
     moneys money    --转账金额
    )
    insert into bb values ('1','2000') --插入两条数据
    insert into bb values ('2','3000')
    用这个表创建一个存储过程:
    
    create procedure mon --创建存储过程,定义几个变量
    
    @toID int,    --接收转账的账户
    
    @fromID int ,  --转出自己的账户
    
    @momeys money --转账的金额
    
    as
    
    begin tran --开始执行事务
    
     
    
    update bb set moneys=moneys-@momeys where ID=@fromID -执行的第一个操作,转账出钱,减去转出的金额
    
    update bb set moneys=moneys+@momeys where ID=@toID --执行第二个操作,接受转账的金额,增加
    
     
    
    if @@error<>0 --判断如果两条语句有任何一条出现错误
    
    begin rollback tran –开始执行事务的回滚,恢复的转账开始之前状态
    
    return 0
    
    end
    
    go
    
     
    
    else   --如何两条都执行成功
    
    begin commit tran 执行这个事务的操作
    
    return 1
    
    end
    
    go
    

      

  • 相关阅读:
    Tom和Jerry来了,Tom和Jerry走了——北漂18年(38)
    查找(一)史上最简单清晰的红黑树解说
    HDU4763-Theme Section(KMP+二分)
    Loadrunner得到server參数
    hdu 4002
    javascript——从「最被误解的语言」到「最流行的语言」
    【云快讯】之四十八《IBM和Cisco最新收购,加强Openstack易用能力》
    2013级学生两学期编程量统计
    Hadoop高速入门
    HDOJ 3339 In Action
  • 原文地址:https://www.cnblogs.com/alphafly/p/3939337.html
Copyright © 2011-2022 走看看