• 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.