博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

事务的使用

Posted on 2013-08-01 16:04  love楠  阅读(144)  评论(0编辑  收藏  举报

事务就是负责把一系列操作看做一个独立的逻辑单元,这些操作要么同时成功,要么同时失败。下面是一个经典的例子:

复制代码
createprocedure TransferMoeny (     @FromAccountNovarchar(50),-- 转出账号    @ToAccountNovarchar(50),--转入账号    @MoneyCountmoney--转账金额) as--判断账号是否存在ifexists (select1from 帐户表 where 账号 =@FromAccountNo) begin     ifexists (select1from 帐户表 where 账号 =@ToAccountNo)     begin         --判断转出金额是否大于当前余额        if (select 当前余额 from 帐户表 where 账号 =@FromAccountNo) >=@MoneyCount         begin             --开始转账            begintransaction             insertinto[存取记录表] ([账号],[存取类型], [存取金额]) values(@FromAccountNo, -1,@MoneyCount)             if@@error<>0             begin                 rollbacktransaction--发生错误则回滚事务,无条件退出l                return             end                        insertinto[存取记录表] ([账号],[存取类型], [存取金额]) values(@ToAccountNo, 1,@MoneyCount)             if@@error<>0             begin                 rollbacktran                 return             end             committransaction--两条语句都完成,提交事务        end         else                raiserror ('转账金额不能大于该账号的余额',16,1)     end     else     raiserror ('转入账号不存在',16,1)
endelse     raiserror ('转出账号不存在',16,1)
复制代码