1.事物机制
四个属性:原子性Atomicity,一致性Consistency,隔离性Isolation,持久性Durability ,即ACID特性。
2. 事务必须具备的特性:
1) 原子性: Atomicity :事务是一个完整的操作, 个元素是不可再分的。事务中所以元素必须作为一个整体提交或回滚。如果十五中任何元素失败,则整个事务将失败。
2)一致性: Consistency: 当事务完成时,数据必须处于一致状态。
3)隔离性: Lsolation: 对数据进行修改的所有并发事务是彼此隔离的,它不以任何方式依赖或影响其他事务。
4)持久性: 不管系统是否发生了故障,事务处理的结果都是永久性的。
3. 如何执行事务:
1)开始事务: begin transaction
2) 提交事务: commit transaction
3) 回滚事务: rollback transaction(数据处理过程中出错,回滚到没有处理之前的数据状态,或回滚到事务内部的保存点。)
4. 事务分类
1) 显示事务: 用begin transaction 明确指定事务的开始
2) 隐式事务: 通过设置 set implicit_transactions on 语句,将隐式事务模式设置为打开。当以隐式事务模式操作时,SQlServer将在提交或回滚事务后自动启动新事务。不需要描述每个事务的开始,只要提交或回滚每个事务即可。
3) 自动提交事务: 这是SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交。如果错误,则自动回滚。
5. 示例
XXXXXX 业务逻辑
begin transaction --开始事务
declare @error int --定义变量,累积事务执行过程中的错误
set @error = 0
----- 执行语句1
set @error = @error + @@error --累积错误
---- 执行语句2
set @error = @error + @@error --累积错误
------
--判断
if @error <> 0 --有误
begin
print '回滚事务'
rollback transaction
end
else
begin
print '提交事务'
commit transaction
end
========================================
begin transaction --开启一个事务
--其后的所有代码都是一个整体,表示可以使用一定语句限制这些代码是否起作用
begin try
--sql 语句
commit;--表示事务提交
end try
begin catch
rollback;--表示回滚
end catch
go
示例
begin transaction
declare @myError int;
set @myError = 0;
update bank set balance=balance - 1000 where cid='0001';
set @myError = @myError + @@ERROR;
update bank set balance=balance + 1000 where cid='0002';
set @myError = @myError + @@ERROR;
if(@myError > 0)
begin
rollback
end
else
begin
commit
end;
go