And what happens if the t2 block is replaced with a seperate stored procedure and an error occurs inside the stored procedure?
CREATE PROCEDURE [dbo].[proc1]
AS
BEGIN TRAN t1
UPDATE table1 SET key = 1 WHERE id = 100
IF @@error 0
ROLLBACK TRAN t1
EXEC proc2
IF @@error 0
ROLLBACK TRAN t1
UPDATE table1 SET key = 3 WHERE id = 100
IF @@error 0
ROLLBACK TRAN t1
COMMIT TRAN t1
GO
---------
CREATE PROCEDURE [dbo].[proc2]
AS
UPDATE table1 SET key = 2 WHERE id = 100
GO
Thanks.