sql语句如下:
declare @num int
begin try
begin tran
insert into AFZKDZJLB1(ACZKBH)values('@ACZKBH');
set @num = @@IDENTITY;
insert into AFZKDZJLB2(ACDYZDBH)values(@num);
RAISERROR('Error raised in TRY block.',16,1);---加了异常来测试回滚
commit tran
end try
begin catch
rollback tran
end catch在程序里我用的是 ExecuteNonQuery() 方法执行的,发现无法判断Sql语句是否回滚,因为返回的受影响的行数,不管回滚还是成功都是大于0的.....该怎么解决啊,求解,谢谢!!!
declare @num int
begin try
begin tran
insert into AFZKDZJLB1(ACZKBH)values('@ACZKBH');
set @num = @@IDENTITY;
insert into AFZKDZJLB2(ACDYZDBH)values(@num);
RAISERROR('Error raised in TRY block.',16,1);---加了异常来测试回滚
commit tran
end try
begin catch
rollback tran
end catch在程序里我用的是 ExecuteNonQuery() 方法执行的,发现无法判断Sql语句是否回滚,因为返回的受影响的行数,不管回滚还是成功都是大于0的.....该怎么解决啊,求解,谢谢!!!
这时候要回滚
begin catch
set @num = -1
rollback tran
end catch
select @num
然后在程序里面用 ExecuteScalar()方法?
insert into AFZKDZJLB1(ACZKBH)values('@ACZKBH');
set @num = @@IDENTITY;
insert into AFZKDZJLB2(ACDYZDBH)values(@num);
RAISERROR('Error raised in TRY block.',16,1);
if(@@error<>0)
begin
select 0
ROLLBACK
end
ELSE
begin
COMMIT
select 1
end
用 ExecuteScalar() 方法执行 看返回值