ROLLBACK TRANSACTION请求在sql server中没有相应的BEGIN TRANSACTION错误

Sin*_*du_ 6 sql transactions

我收到错误"ROLLBACK TRANSACTION请求没有相应的BEGIN TRANSACTION".如果任何delete语句的行计数为零,我试图回滚事务.以下是我的代码.我究竟做错了什么?请帮忙

alter procedure delete_staff(@staffID varchar(10))
as
declare @tempvar varchar(50), @staffName varchar(50), @jobTitle varchar(50), @dept varchar(50)
begin transaction trans1
        declare @rc1 int
        declare @rc2 int
        declare @rc3 int
        select @tempvar = left(@staffID,1) from Staff
        delete from staff where staffID = @staffID
        set @rc1=@@rowcount
        delete from Login where userID = @staffID 
        set @rc2=@@rowcount
        begin
        if(@tempvar='S')
                begin
                delete from Specialist where specialistID = @staffID    
                set @rc3=@@rowcount
                end
        else if(@tempvar='H')
                begin
                delete from Helpdesk_Operator where helpdesk_OperatorID = @staffID
                set @rc3=@@rowcount
                end
        commit transaction trans1
        end
        if(@rc1=0 or @rc2=0 or @rc3=0)
        begin
        rollback transaction trans1
        end
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 5

如果提交事务,则无法进行回滚.做一个或另一个:

if(@rc1=0 or @rc2=0 or @rc3=0)
begin
  rollback transaction trans1
end else begin
  commit transaction trans1
end
Run Code Online (Sandbox Code Playgroud)