事务的特性
- 原子性:事务是一个完整的操作,事务的各步操作时不可分的,要么都执行,要么都不执行。
- 一致性:当事务完成时,数据必须处于一致状态。
- 隔离性:并发事务之间彼此隔离、独立,它不应以任何方式依赖与或影响其他事务。
- 永久性:事务完成后,它对数据库的修改被永久保存。
事务分类
- 显式事务 用BEGIN TRANSACTION明确指定事务的开始。 最常用的事务类型
- 隐式事务 通过设置SETIMPLICIT_TRANSACTIONS ON 语句,将隐性事务模式设置为打开。 其后T-SQL语句自动启动一个新事务。 提交或回滚一个事务后,下一个T-SQL语句又将启动一个新事务。
- 自动提交事务 SQL Server的默认方式。 每条单独的SQL语句被视为一条事务。
如何使用事务
- 开始事务
BEGIN TRANSACTION
- 提交事务
COMMIT TRANSACTION
- 回滚事务
ROLLBACK TRANSACTION
一旦事务提交或回滚,则事务结束
- 事务示例
use StudentManager
go
declare @errorSum int
set @errorSum=0
begin transaction
begin
。。。update/insert/delete语句
update CardAccount set CurrentMoney = CurrentMoney-1000 where StudentId = 100001
set @errorSum=@errorSum @@ERROR
update CardAccount set CurrentMoney = CurrentMoney 1000 where StudentId=100002
set @errorSum=@errorSum @@ERROR
if(@errorSum>0)
rollback transaction
else
commit transaction
end
go