tran 事务

if exists(select * from sys.objects where name='bank')
 drop table bank

CREATE TABLE bank
(
    customerName nvarchar(10),  --顾客姓名
    [Money] MONEY     --当前余额
)

ALTER TABLE bank --创建表
   ADD CONSTRAINT CK_currentMoney   
       CHECK([Money]>=1)

INSERT INTO bank(customerName,[Money])
        VALUES('张三',1000)
INSERT INTO bank(customerName,[Money])
        VALUES('李四',1)
        
 
declare @transMoney money
declare @error int
set @error=0
set @transMoney=100
begin transaction
update bank set money=money-@transMoney where customerName='张三'
set @error = @@error+@error
update bank set money=money+@transMoney where customerName='李四'
set @error = @@error+@error

--判断上面的sql语句是否都执行成功,如果都执行成功,则提交事务,否则加滚事务
if (@error=0)
 begin
 commit transaction --上面的sql语句没一个出错,把执行的sql语句提交到磁盘
 print '转钱成功!'
 end
else
 begin 
 rollback transaction --上面的sql语句有一个出错,回滚事务  
 print '转帐失败!'
 end

posted @ 2011-08-28 13:22  _best  阅读(136)  评论(0编辑  收藏  举报