SET XACT_ABORT OFF ; -- > really important to set that to OFF BEGIN DECLARE @Any_error int DECLARE @SSQL varchar(4000) BEGIN TRANSACTION INSERT INTO user_skill (char_id, skill_id, skill_lev, to_end_time, subjob_id) SELECT char_id, skill_id, skill_lev, to_end_time, subjob_id FROM duped_user_skill SELECT @Any_error = @@ERROR PRINT @ssql IF @Any_error = 0 OR @Any_error=2627 BEGIN TRY COMMIT TRAN END TRY BEGIN CATCH END CATCH ELSE BEGIN ROLLBACK TRAN END END