-------------------------- -- WORKER SP (inner SP being called) -------------------------- DECLARE @useLocalTran int IF @@TRANCOUNT = 0 SET @useLocalTran = 1 ELSE SET @useLocalTran = 0 IF @useLocalTran = 1 BEGIN TRANSACTION INSERT INTO dbo.trans (account_id, description, amount, ccnumber, type, pproved) VALUES (@intAccountID, @strDescription, @strAmount, @strCCNumber, strType, @strApproved) SET @intError = @@ERROR BEGIN IF @intError != 0 BEGIN IF @useLocalTran = 1 AND @@TRANCOUNT > 0 ROLLBACK TRANSACTION EXEC dbo._Errors_Insert @@ERROR, '_Trans_Insert' END ELSE BEGIN IF @useLocalTran = 1 AND @@TRANCOUNT > 0 COMMIT TRANSACTION END END RETURN CASE WHEN @intError = 0 THEN 0 ELSE -1 ENDNotice that I've changed your proc to only manage transactions if no transaction has been started.