编写简单的事务应用,常用的格式
分类:web前端

事务:当一次处理中存在多个操作,要么全部操作,要么全部不操作,操作失败一个,其他的就全部要撤销,不管其他的是否执行成功,这时就需要用到事务.

BEGIN
SET NOCOUNT ON;
if @_MODE NOT IN ('A','M','D')
begin
  raiserror('参数错误!',16,3);
  return;
end;

begin transaction tran_bank;

mssql 存储过程事务处理与事务隔离级别

declare @rowcount int,@error int;

declare @tran_error int;

begin tran update tablea set columnsa=1,columnsb=2 where recis=1 if(@@error 0 or @@rowcount 1) begin rollback tran raiserror( '此次update表tablea出错!!' , 16 , 1 ) return end

insert into tableb (columnsa,columnsb) values (1,2) if(@@error 0 or @@rowcount 1) begin rollback tran raiserror( '此次update表tablea出错!!' , 16 , 1 ) return end

end commit

if @_MODE='A'
begin
  insert into szdxInfo (Id,Bh,[Name],nation) select
    @Id,@Bh,@Name,
    @Nation;
  if @@error<>0 return;
end;

set @tran_error = 0;

if @_MODE='M'
begin
  update szdxInfo set [Name]=@Name,
    nation=@Nation
    where id=@id;
  select @error=@@error,@rowcount=@@rowcount;
  if @error<>0 return;
  if @rowcount<>1
    begin
      raiserror('没有修改记录!!',16,3)
      return;
    end;
end;

begin try

if @_MODE='D'
begin
  delete szdxInfo where Id=@id;
  select @error=@@error,@rowcount=@@rowcount;
  if @error<>0 return;
  if @rowcount<>1
    begin
    raiserror('没有删除记录!!',16,3)
    return;
  end;
end;

update bank set totalMoney = totalMoney - 10000 where userName = 'jack';

insert into ActionLog ([date],[userid],Computerid,
  TableName,[Action]) select
    getdate(),@_USERID,
    @_COMPUTERID,
    'szdxInfo',@_MODE;

set @tran_error = @tran_error + @@error;

/*
exec Update_szdxInfo @id='11',
@Name ='刘某某',
@Nation ='汉族',
@_MODE ='A',
@_USERID=1,
@_COMPUTERID=1
select * from szdxINfo
*/
END

update bank set totalMoney = totalMoney + 10000 where userName = 'jason';

set @tran_error = @tran_error + @@error;

end try

begin catch

print '出现异常,错误编号:' + convert(varchar, error_number()) + ', 错误消息:' + error_message();

set @tran_error = @tran_error + 1;

end catch

if (@tran_error > 0)

begin

--执行出错,回滚事务

rollback tran;

print '转账失败,取消交易';

end

else

begin

--没有异常,提交事务

commit tran;

print '转账成功';

end

go

本文由10bet手机官网发布于web前端,转载请注明出处:编写简单的事务应用,常用的格式

上一篇:正则表达式 下一篇:没有了
猜你喜欢
热门排行
精彩图文