• 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
    

      

  • 相关阅读:
    1016: 写出来吧
    从硬件工程师转到纯软件开发,回顾那些岁月
    用大白话聊聊JavaSE -- 自定义注解入门
    数组中的一些常用方法总结
    js中的隐式转换
    开源OSS.Social微信项目进阶介绍
    .Net开源oss项目进度更新(含小程序接口)
    windows下部署免费ssl证书(letsencrypt)
    完成OSS.Http底层HttpClient重构封装 支持标准库
    谈javascript变量声明
  • 原文地址:https://www.cnblogs.com/alphafly/p/3939337.html
Copyright © 2020-2023  润新知