1.
SET XACT_ABORT ON
begin tran
delete from TOP_MultiPage where
delete from TOP_MultiPageConfig where
commit
2.
在T-SQL中我们可以借助系统全局变量@@Error要得到上一条语句的异常,正常情况下它是返回0的。
BEGIN TRANSACTION T1
insert into [teach_info]([teach_id],[login_name],[login_pwd],[real_name],[state]) values(@id,@login_name,@pwd,@name,@state);
if @@Error<>0
begin
ROLLBACK TRANSACTION T1;
return;
end
delete from [tmpUser] where [login_name]=@login_name;
if @@Error<>0
begin
ROLLBACK TRANSACTION T1;
return; --别忘了返回语句,不然下面语句会继续执行,使存储过程报错
end
COMMIT TRANSACTION T1
3.
我们看到这样两条语句还可以,但是语句多了要使用多条判断语句,好像有点多余了,SQL2005解决了这个问题,它的try...catch 块可以一次捕获到其中的异常,并在catch块中执行回滚。
BEGIN TRANSACTION T1
BEGIN TRY
insert into [teach_info]([teach_id],[login_name],[login_pwd],[real_name],[state]) values(@id,@login_name,@pwd,@name,@state);
delete from [tmpUser] where [login_name]=@login_name;
COMMIT TRANSACTION T1
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION T1;
END CATCH