Det bedste ville være at undgå triggere og udføre et tjek med, om eksisterer, før du indsætter
IF NOT EXISTS (SELECT TOP 1 1 FROM MyTable WHERE @InsertedEndDate > begin_date AND @InsertedBeginDate < end_date)
BEGIN
--do actual insert/work
END
Det er en simpel kontrol for at finde det første overlap. Vælg TOP 1 1 er et trick til at undgå faktisk at hente dataene. Den vender tilbage, så snart den matcher en række, der overlapper det datointerval, du faktisk forsøger at gemme