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
    

      

  • 相关阅读:
    C#分割字符串
    Android中this、super的区别
    Android activity跳转方式
    Android中的各种单位
    Android布局方式_RelativeLayout
    Parallelism , Partitioner
    编译hadoop,spark遇到的问题总结
    scala,spark练习题提高
    元组复杂例子
    sparksql 操作hive
  • 原文地址:https://www.cnblogs.com/alphafly/p/3939337.html
Copyright © 2011-2022 走看看