T-SQL查询语句案例(五)

 

实验五:事务案例:完成转账的过程,如果转账1000会回滚,提示失败,如果转账800,提示成功。

要求:

(1)创建表名为bank,如图所示:

(2)Currentmoney列的Check约束:

(3)插入两条数据:

INSERT INTO bank(customerName,currentMoney) VALUES('张三',1000)

INSERT INTO bank(customerName,currentMoney) VALUES('李四',1)

(4)转账的过程代码:(先执行转账1000,查看结果;之后转账800,查看结果)

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

SELECT * FROM bank

GO

/*--开始事务 (指定事务从此处开始,后续的T—SQL语句都是一个整体--*/

BEGIN  TRANSACTION

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

DECLARE @errorSum INT --声明变量,用于保存所有T—SQL语句错误号的和

SET @errorSum=0        --初始化为,即无错误

/*--转账:张三的账户少1000元,李四的账户多1000元--*/

UPDATE bank SET currentMoney=currentMoney-800

WHERE customerName='张三'

SET @errorSum=@errorSum+@@ERROR --累计是否有错误

UPDATE bank SET currentMoney=currentMoney+800

WHERE  customerName='李四'

SET @errorSum=@errorSum+@@ERROR --累计是否有错误

 

PRINT  '查看转账事务过程的余额'

SELECT  *  FROM  bank

 

/*--根据是否有错误,确定事务是提交还是撤销--*/

IF @errorSum<>0 --如果有错误

   BEGIN

     PRINT  '交易失败,回滚事务'

     ROLLBACK  TRANSACTION

  END

ELSE

   BEGIN

      PRINT  '交易成功,提交事务,写入硬盘,永久地保存'

      COMMIT  TRANSACTION

   END

GO

 

PRINT  '查看转账事务后的余额'

SELECT  *  FROM  bank

GO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值