我正在尝试在SQL Server 2008存储过程中实现自主事务。该过程将只有两个事务,内嵌的事务将提交,但外部事务将回滚。
我看到了许多成功实现相反过程的示例。但我还没有找到我的问题的解决方案。
样本表脚本
样本表脚本
create table testTab1(id int identity(1,1) primary key, name varchar(100));
create table testTab2(id int , name varchar(100));
insert into testTab1(name) values('User1'),('User2'),('User3');
过程的示例代码
CREATE PROCEDURE [dbo].[testSP2]
AS
BEGIN
SET IMPLICIT_TRANSACTIONS ON
BEGIN TRAN
insert into testTab1(name) values('User4'),('User5'),('User6');
IF @@ROWCOUNT>0
BEGIN
SAVE TRAN InnerTran
insert into testTab2(id,name) values(1,'User4'),(2,'User5'),(3,'User6');
--PRINT 'NUMBER OF TRAN='+CAST(@@TRANCOUNT AS VARCHAR(5))
COMMIT TRAN InnerTran
END
ROLLBACK
SET IMPLICIT_TRANSACTIONS OFF
END
MY desired Output is
InnerTransaction
提交,但在这个过程中OuterTransaction
将回滚。 - Avishek