Det bästa vore att undvika triggers och utföra en kontroll med om det finns innan du infogar
IF NOT EXISTS (SELECT TOP 1 1 FROM MyTable WHERE @InsertedEndDate > begin_date AND @InsertedBeginDate < end_date)
BEGIN
--do actual insert/work
END
Det är en enkel kontroll för att hitta den första överlappningen. Välj TOP 1 1 är ett knep för att undvika att faktiskt hämta data, den kommer tillbaka så snart den matchar en rad som överlappar datumintervallet du faktiskt försöker spara