Two items:
1) SAVE TRANSACTION is not valid in distributed transactions. SQL Server will not raise an error, it'll just abort the command.
2) Couldn't you check to see if the change has already been made before doing the Insert? Is there a candidate key that you could check first?
-Mike