zoukankan      html  css  js  c++  java
  • Sql事务

    完整代码如下:

    View Code
    --创建表
    create table t_money
    (
    userid varchar(20),
    username varchar(30),
    [money] int
    )
    go
    --插入数据
    insert into t_money values('1111','puter',1000)
    insert into t_money values('2222','judy',1000)
    go
    --创建转账存储过程
    create proc proc_updatemoney
    @adduserid varchar(30),          --转入的用户
     @subtrationuserid varchar(30),   --转出的用户
     @money int,                      --转出金额
     @errormessage varchar(200) output--输出参数
    as
    Declare @intErrorCode int    --错误数
    set @intErrorCode=0
    Declare @courentmondy int    --当前余额
    Declare @rownum int          --影响行数
    set @rownum=0
    
    begin transaction            --开始事务
    
    select @courentmondy=money from t_money where userid=@subtrationuserid --转出账户当前余额
    if(@money>@courentmondy)   --转出金额是否大于余额
    begin
    select * from dbo.t_money
    set @errormessage='当前余额不足!'
    set @intErrorCode=1         --记录错误
    end
    else
    begin
    update t_money set [money]=[money]+@money where userid=@adduserid
    Select @intErrorCode=@intErrorCode+@@Error  --记录错误
    Select @rownum=@rownum+@@rowcount           --记录影响行数
    update t_money set [money]=[money]-@money where userid=@subtrationuserid  
    Select @intErrorCode=@intErrorCode+@@Error   --记录错误
    Select @rownum=@rownum+@@rowcount            --记录影响行数
    end
    
    if(@intErrorCode=0 and @rownum=2)    --判断是否有错误
    begin
    commit transaction   --提交事务
    select * from dbo.t_money
    set @errormessage='操作成功!'
    return @rownum
    end
    else
    begin
    rollback transaction  --回滚事务
    return @rownum
    end

    示例图:

  • 相关阅读:
    在Unix上使用管道压缩exp导出文件
    自制CPU的黑暗历程一
    Error C1189: #error: Please use the /MD switch for _AFXDLL builds
    Redis乐观锁解决高并发抢红包的问题
    PHP分页类
    汇编基础——使用nasm和bochs学习汇编
    数据同步工具DBsync
    完成端口的一些教程
    sdf
    (转)C#(WIN FORM)两个窗体间LISTVIEW值的修改
  • 原文地址:https://www.cnblogs.com/zcttxs/p/2484707.html
Copyright © 2011-2022 走看看