sql 事务(transaction)

--------------------------------
---------事务操作---------------
--------------------------------
use stuDB
--创建bank表
if exists (select * from sysobjects where name='bank')
 drop table bank
go 
create table bank
(
 customerName char(10),
 currentMoney money
)
go
--给bank表添加约束
alter table bank
 add constraint ck_currentMoney check (currentMoney>=1)
go
--给bank添加数据
insert into bank (customerName,currentMoney) values ('张三',1)
insert into bank (customerName,currentMoney) values ('李四',1001)
go
--事务
print '查看转账前的余额'
select * from bank
go
--开始事务
begin transaction 
declare @errorSum int--错误统计值
set @errorSum=0
--转账
update bank set currentMoney=currentMoney-1000 where customerName='李四'
set @errorSum=@errorSum+@@error
update bank set currentMoney=currentMoney+1000 where customerName='张三'
set @errorSum=@errorSum+@@error
print '查看转账过程中的余额'
select * from bank
if(@errorSum<>0)
 begin
  print '交易失败,回滚!'
  rollback transaction
 end
else
 begin
  print '交易成功,提交!'
  commit transaction
 end
print '查看转账后的余额'
select * from bank
go


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值