简单例子理解数据库事务

系统 1725 0


简单例子理解数据库事务

 

    /*-- 创建表 --*/

--创建农行账户表bank

if exists(select * from sysobjects where name='bank')

	drop table bank

go

create table bank

(

	customerName char(10),		--顾客姓名

	currentMoney money			--当前余额

)

/*-- 添加约束:根据银行规定,账户余额不能少于1元,否则视为销户 --*/

alter table bank

add constraint CK_currentMoney check(currentMoney>=1)

/*-- 插入测试数据:张三开户,开户金额为800,李四开户,开户金额1 --*/

insert into bank(customerName,currentMoney) values('张三',1000)

insert into bank(customerName,currentMoney) values('李四',1)

--查看结果

select * from bank

go



/*-- 转账测试:张三希望通过转账,直接汇钱给李四1000元 --*/

set nocount on --不显示受影响的行数信息

print '查看转账事务前的余额'

select * from bank

go

/*-- 开始事务 --*/

begin transaction

/*-- 定义变量,用于累计事务执行的过程中的错误 --*/

declare @errorSum int

set @errorSum=0		--初始化为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
  

简单例子理解数据库事务

 

 

简单例子理解数据库事务


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论