MSSQL之事务的用法
来源:互联网 发布:网络语戏精是什么意思? 编辑:程序博客网 时间:2024/06/04 20:12
IF OBJECT_ID('bankInfo') IS NOT NULL
DROP TABLE bankInfo
GO
--银行卡信息表
CREATE TABLE bankInfo
(
uId VARCHAR(18) NOT NULL PRIMARY KEY,--卡号
uName VARCHAR(20), --卡主姓名
uMoney MONEY --卡中余额
)
GO
INSERT INTO bankInfo VALUES('9559901','张三',1)
INSERT INTO bankInfo VALUES('9559902','李四',1000)
INSERT INTO bankInfo VALUES('9559903','王五',800)
INSERT INTO bankInfo VALUES('9559904','赵六',50)
INSERT INTO bankInfo VALUES('9559905','赵明',5)
SELECT * FROM bankInfo
------begin transaction---------开始事务
SET IMPLICIT_TRANSACTIONS ON
DECLARE @myerror INT --用于存储错误号
SET @myerror=0
SET @myerror=@myerror+(select count(*) from bankInfo WHERE uId='9559902' and uMoney<800) --如果帐号余额小于800,则将error+1
UPDATE bankInfo SET uMoney=uMoney-800 WHERE uId='9559902'
SET @myerror=@myerror+@@ERROR --如果产生错误,则将错误号累加
UPDATE bankInfo SET uMoney=uMoney+800 WHERE uId='9559901'
SET @myerror=@myerror+@@ERROR --如果产生错误,则将错误号累加
IF @myerror>0 --如果执行过程出错
BEGIN
PRINT '转账失败,正准备回滚事务!'
ROLLBACK TRANSACTION
END
ELSE --如果过程中没有出现问题
BEGIN
PRINT '转账成功,准备提交事务!'
COMMIT TRANSACTION
END
------end transaction---------结束事务
PRINT '转账后的余额'
SELECT * FROM bankInfo
DROP TABLE bankInfo
GO
--银行卡信息表
CREATE TABLE bankInfo
(
uId VARCHAR(18) NOT NULL PRIMARY KEY,--卡号
uName VARCHAR(20), --卡主姓名
uMoney MONEY --卡中余额
)
GO
INSERT INTO bankInfo VALUES('9559901','张三',1)
INSERT INTO bankInfo VALUES('9559902','李四',1000)
INSERT INTO bankInfo VALUES('9559903','王五',800)
INSERT INTO bankInfo VALUES('9559904','赵六',50)
INSERT INTO bankInfo VALUES('9559905','赵明',5)
SELECT * FROM bankInfo
------begin transaction---------开始事务
SET IMPLICIT_TRANSACTIONS ON
DECLARE @myerror INT --用于存储错误号
SET @myerror=0
SET @myerror=@myerror+(select count(*) from bankInfo WHERE uId='9559902' and uMoney<800) --如果帐号余额小于800,则将error+1
UPDATE bankInfo SET uMoney=uMoney-800 WHERE uId='9559902'
SET @myerror=@myerror+@@ERROR --如果产生错误,则将错误号累加
UPDATE bankInfo SET uMoney=uMoney+800 WHERE uId='9559901'
SET @myerror=@myerror+@@ERROR --如果产生错误,则将错误号累加
IF @myerror>0 --如果执行过程出错
BEGIN
PRINT '转账失败,正准备回滚事务!'
ROLLBACK TRANSACTION
END
ELSE --如果过程中没有出现问题
BEGIN
PRINT '转账成功,准备提交事务!'
COMMIT TRANSACTION
END
------end transaction---------结束事务
PRINT '转账后的余额'
SELECT * FROM bankInfo
1 0
- MSSQL之事务的用法
- MSSQL之事务的用法
- MSSQL之事务的用法
- MSSQL之游标的用法
- MSSQL之游标的用法
- MSSQL之十八 事务
- MSSQL 事务的使用
- mssql里事务的详解
- mssql update 的用法
- mssql update 的用法
- MSSQL Merge的用法
- mssql update 的用法
- MSSQL之十 触发器和事务
- MSSQL事务
- mssql数据库的事务隔离级别
- 启用MSSQL分布式事务的常见问题
- 使用MsSql事务回滚总结(SET XACT_ABORT用法)
- MSSQL的一些用法集合
- android四大组件(详细总结)
- css 浮动方式实现水平导航栏
- 【BUG】windows使用部分软件界面模糊问题解决
- libgdx [Compoments]
- 开篇博文
- MSSQL之事务的用法
- memoryCache和diskCache流程详解
- 403
- CentOS升级Python3.5并安装lxml等模块
- ProcessBook 调用webservice 异常处理
- UGUI UI框架实现遇到的问题
- 概率语言模型 Probabilistic Language Modeling (二) --- 模型估计算法介绍
- Qualcomm官方QDN1月EDM:属于你的Dragon Board 410c
- android 自定义View生成验证码