@@ERROR:当前一个语句遇到错误,则返回错误号,否则返回0。
需要注意的是@ERROR在每一条语句执行后会被立刻重置,因此应该在要验证的语句执行后检查数值或者是将它保存到局部变量中以备将来使用。
select * from StuInfo insert into StuInfo values(N'张三',null,1) update stuInfo set cid=1007 where Name=N'张三' select * from StuInfo,ClassInfo where StuInfo.cid=ClassInfo.Id go create proc del_class @id int as begin tran declare @error int=0 delete from StuInfo where cid=@id select @error+=@@ERROR --上一次执行语句结果的错误编号 delete from ClassInfo where id=@id set @error+=@@ERROR if @error<>0 rollback tran else commit tran go exec del_class 1007