Create Procedure MyProcedure
AS
Begin
Set NOCOUNT ON;
Set XACT_ABORT ON; --这句话非常重要
begin try
Begin Tran --开始事务
insert into userinfo(username,userpwd,RegisterTime) values('admin','admin',getdate())
insert into userinfo(username,userpwd,RegisterTime) values('jack','jack',getdate())
Commit Tran --提交事务
end try
begin catch
--在此可以使用xact_state()来判断是否有不可提交的事务,不可提交的事务
--表示在事务内部发生错误了。Xact_state()有三种值:-1.事务不可提交;
--1.事务可提交;0.表示没有事务,此时commit或者rollback会报错。
if xact_state()=-1
rollback tran;
end catch
Set XACT_ABORT OFF;
End