2、个事务同时进行,它们之间应该互不干扰。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。永久性事务提交以后,所做的工作就被永久的保存下来事务实例:create procedure TransferMoeny( @FromAccountNo varchar(50),-- 转出账号 @ToAccountNo varchar(50),--转入账号 @MoneyCount money--转账金额)as--判断账号是否存在if exists (select 1 from 帐户表 where 账号 = @
3、FromAccountNo) begin if exists (select 1 from 帐户表 where 账号 = @ToAccountNo) begin --判断转出金额是否大于当前余额 if (select 当前余额 from 帐户表 where 账号 = @FromAccountNo) >= @MoneyCount begin --开始转账 begin transaction insert into [存取记录表] ([账号],[存取类型], [存取金额
4、]) values(@FromAccountNo, -1,@MoneyCount) if @@error <> 0 begin rollback transaction--发生错误则回滚事务,无条件退出l return end insert into [存取记录表] ([账号],[存取类型], [存取金额]) values(@ToAccountNo, 1,@MoneyCount) if @@err
5、or <> 0 begin rollback tran return end commit transaction --两条语句都完成,提交事务 end else raiserror ('转账金额不能大于该账号的余额',16,1) end else raiserror ('转入账号不存在',16,1)endelse raiserror ('转出账号不存在',16,1)