• sql2005事务的使用


    公司里的每个项目都有很多一次要操作两次以上数据库的,为了数据的完整性,这就需要使用事务

    事务也属于存储过程,代码如下

    ALTER proc [dbo].[js_takemoney]
    @userid bigint,                            --参数
    @usercode varchar(50),
    @amount numeric(18,2),
    @rmb numeric(18,2)
    as
    begin
    declare @balance numeric(18,2)
    declare @takecharg numeric(18,2)
    declare @takechargmoney numeric(18,2)
    declare @turetype numeric(18,2)
    declare @getamount numeric(18,2) --实际金额
    declare @waterid int --流水账表的ID
    select @takecharg =TakeMoneyChargRate ,@turetype = UStoRMB from tb_GlobeParam where id = '1'
    set @takechargmoney = @amount * @takecharg/100
    set @getamount =@amount - (@amount * @takecharg/100) --手续费的计算


    begin tran takemoney         --开始事务
    update tb_user set BonusAccount = BonusAccount - @amount where userid = @userid --更新用户表
    select @balance = BonusAccount from tb_user where userid = @userid
    insert into tb_AccountDetails values (@userid,@usercode,'1','提现','0',@amount,@balance,getdate()) --流水账表记录插入
    select top 1 @waterid = @@IDENTITY from tb_AccountDetails where userid = @userid
    insert into tb_TakeMoney values (getdate(),@amount,@getamount,@rmb,@takechargmoney,@userid,'0',@waterid,getdate()) --提现表记录插入
    if @@error<>0             --如果失败
    begin
    rollback tran takemoney         -- 回滚事务
    return
    end
    commit tran mytran           --提交事务
    end

    这写法是网上一位不知名的网友提供的,我忘了……这个例子是我项目里的例子

    希望对初学者有所帮助

  • 相关阅读:
    android Context 持有导致的内存泄漏
    android PreferenceFragment
    android 修改 SwitchPreferenceCompat 高度,内边距,字体大小
    Android MPAndroidChart RadarChart (蜘蛛网图)
    Bugtags 测试平台(支持ios、android)
    BlockCanary 一个轻量的,非侵入式的性能监控组件(阿里)
    RecyclerView item 状态错乱
    RecyclerView android:layout_width="match_parent" 无效
    android-async-http cancelRequests
    Android MultiDex
  • 原文地址:https://www.cnblogs.com/CommonDream/p/2321223.html
Copyright © 2020-2023  润新知