例:
……关键语句讲解………
BEGIN TRANSACTION
/*--定义变量,用于累计事务执行过程中的错误--*/
DECLARE @errorSum INT
SET @errorSum=0 --初始化为0,即无错误
/*--转账:张三的账户少1000元,李四的账户多1000元*/
UPDATEbankSET 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
事务,一般是指要做的或所做的事情
概念:在关系数据库中,一个事务可以是一条sql语句,一组sql语句或整个程序
特性:事务是恢复和并发控制的基本单位
事务的四个特性:
1·原子性:一个事务是一个不可分割的工作单位,事务中包括的操作要么全做要么全不做(我主要用到的功能), 2·一致性:事务必须是使数据库从一个一致状态变到另一个一致性状态,一致性与原子性是密切相关的(不是很懂哈,欢迎在下面用白话补充) 3·隔离性:一个事务的执行不能被其它事务干扰,即一个事务内部的操作及使用的数据对并发的其它事务是隔离的,并发执行的各个事务之间不能相互干扰 4·持久性:也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的,接下来的其它操作或故障不应该对其有任何影响