La cosa migliore sarebbe evitare i trigger ed eseguire un controllo con se esiste prima dell'inserimento
IF NOT EXISTS (SELECT TOP 1 1 FROM MyTable WHERE @InsertedEndDate > begin_date AND @InsertedBeginDate < end_date)
BEGIN
--do actual insert/work
END
È un semplice controllo per trovare la prima sovrapposizione. Seleziona TOP 1 1 è un trucco per evitare di recuperare effettivamente i dati, verrà restituito non appena corrisponderà a una riga che si sovrappone all'intervallo di date che stai effettivamente cercando di salvare