事务--原子性-隔离性-一致性-持久性
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 --累计是否有错误
IF @errorSum<>0 --如果有错误
BEGIN
print '交易失败,回滚事务'
ROLLBACK TRANSACTION
END
ELSE
BEGIN
print '交易成功,提交事务,写入硬盘,永久的保存'
COMMIT TRANSACTION
END
GO
print '查看转账事务后的余额'
SELECT * FROM bank
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 --累计是否有错误
IF @errorSum<>0 --如果有错误
BEGIN
print '交易失败,回滚事务'
ROLLBACK TRANSACTION
END
ELSE
BEGIN
print '交易成功,提交事务,写入硬盘,永久的保存'
COMMIT TRANSACTION
END
GO
print '查看转账事务后的余额'
SELECT * FROM bank
GO
---------------------------
select @@TRANCOUNT --显示当前的事务的数量,当begin一个事务,该值加1,commit一个事务,该值减一,rollback 事务数减为0(在一个嵌套的事务中)