SQL事务介绍

本文介绍了SQL中事务的基本操作,包括BeginTransaction、CommitTransaction和RollbackTransaction,并通过实例展示了如何使用@@Error返回值来控制事务的回滚。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Begin Transaction:开始一个事务;
Commit Transaction:提交事务;
Rollback Transaction:回滚事务。

其中Commit Transaction 与Rollback Transaction 都必须有对应的Begin Transaction 才能正确被执行。

如:

Begin Tran
……
Rollback Tran
Commit Tran

以上事务只执行了回滚操作。执行Commit Tran系统会返回3902错误,即@@Error=3902,COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。

Begin Tran
……
Commit Tran
Rollback Tran

以上事务员执行了提交事务操作。执行Rollback Tran系统会返回3903错误,即@@Error=3903,ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。

实例:使用@@Error返回值来控制回滚

设有表a,有字段num (int),name (varchar(20));表b,有字段num (int),Add (varchar(50))。以下是一个存储过程,使用了@@Error的返回值来控件事件回滚:

CREATE PROCEDURE [dbo].[TranTest]
@num int,@name varchar(20),@Add varchar(20)
AS
DECLARE @ErrorA int,@ErrorB int
begin transaction aa
insert into a values(@num,@name)
SELECT @ErrorA = @@error
insert into b values(@num,@Add)
SELECT @ErrorB = @@error
if @ErrorA>0 or @ErrorB>0
begin
Rollback transaction aa
end
else
commit transaction aa
GO

CREATE PROCEDURE [dbo].[TranTest]
@num int,@name varchar(20),@Add varchar(20)
AS
DECLARE @Err int
begin transaction aa
insert into a values(@num,@name)
if @@error>0 begin SELECT @Err = 1 end
insert into b values(@num,@Add)
if @@error>0 begin SELECT @Err = 1 end
if @Err>0
begin
Rollback transaction aa
end
else
commit transaction aa
GO 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值