La meilleure chose serait d'éviter les déclencheurs et d'effectuer une vérification avec s'il existe avant d'insérer
IF NOT EXISTS (SELECT TOP 1 1 FROM MyTable WHERE @InsertedEndDate > begin_date AND @InsertedBeginDate < end_date)
BEGIN
--do actual insert/work
END
C'est une simple vérification pour trouver le premier chevauchement. Le Select TOP 1 1 est une astuce pour éviter de récupérer réellement les données, il reviendra dès qu'il correspond à une ligne qui chevauche la plage de dates que vous essayez réellement d'enregistrer