什么是事务?
事务就是被绑定在一起作为一个逻辑工作单元的SQL语句组
在哪里使用事务?
为了确保要么执行,要么不执行,就可以使用事务。
为什么要用事务?
如果任何一个语句操作失败那么整个操作就被失败,进而回滚到操作前状态,或者是上个节点。
事务有哪些特点?
要将一组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。
如何使用事务?
我们建立如下表,数据可自行添加:
列名 | 数据类型 | 数据规范 |
---|---|---|
ID | int | 主键,自增 |
Name | nvarchar(50) | 用户名 |
Remain | decimal(18, 2) | 余额 |
创建存储过程,在其中创建视图并调用:
go
create proc pc_upd_remian(
@qid int,
@hid int
)
as
--定义变量记录错误数量
declare @error_nums int
set @error_nums=0
--开始事务
begin transaction tran_change
begin try
update [dbo].[Customer] set Remain=Remain-300 where ID=@qid
update [dbo].[Customer] set Remain=Remain+300 where ID=@hid
end try
begin catch
set @error_nums=@error_nums+1
print '错误异常'+convert(varchar(50),error_number()) +'错误消息'+error_message()
end catch
if(@error_nums>0)--表示有错,回滚
rollback transaction tran_change
else
commit transaction tran_change
exec pc_upd_remian '4','5'
调用成功后结果如下 :