I have a table that consists of, among other things, two fields named StartTime and EndTime. Both are TIME fields.
I want to add a constraint preventing the insertio
This trigger will also work for situations where one timespan completely contains the other. For example, if there's an existing record for 6:00 - 9:00 and you try to insert one for 5:00 - 10:00.
(Based on David Hall's answer)
CREATE TRIGGER DateRangeOverlapTrigger
ON TargetTable
FOR INSERT, UPDATE
AS
BEGIN
IF EXISTS
(SELECT t.UniqueId
FROM TargetTable t
JOIN inserted i ON i.starttime < t.endtime
AND i.endtime > t.starttime
AND i.UniqueId <> t.UniqueId)
BEGIN
RAISERROR ('Invalid due to time overlap', 16, 1)
IF (@@TRANCOUNT > 0)
ROLLBACK
END
END