Do transactions always have to managed in a cascading fashion ie
Can you do something like ...
OR can you even keep an @ErrCount and on the basis of that at the end of your procedure COMMIT or ROLLBACK?
Code:
BEGIN TRANSACTION
INSERT INTO tblA ....
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN 1
END
ELSE
BEGIN
INSERT INTO tblB ....
IF @@ERROR <> 0
BEGIN
RETURN 1
ROLLBACK TRANSACTION
END
ELSE
BEGIN
RETURN 0
COMMIT TRANSACTION
END
END
Can you do something like ...
Code:
CREATE PROCEDURE spProc1
(@Response INT OUTPUT)
AS
BEGIN
BEGIN TRANSACTION
INSERT INTO tblExists (error) values ('test')
IF @@ERROR <> 0
BEGIN
GOTO ERROR_HANDLER
END
INSERT INTO tblNotExists(error) values ('test')
IF @@ERROR <> 0
BEGIN
GOTO ERROR_HANDLER
END
SET @Response = 0
COMMIT TRANSACTION
ERROR_HANDLER:
SET @Response = 1
ROLLBACK TRANSACTION
END
GO
OR can you even keep an @ErrCount and on the basis of that at the end of your procedure COMMIT or ROLLBACK?