How to Prevent Timeslot Overlap SQL newbie here. I currently have a 2-table database-"Customers" and "Bookings". This question concerns the "Booking" table, which has 3 attributes this question is about:


BookDate
BookStart
BookEnd

I'm trying to prevent the timeslots from overlapping. To do so, I've managed to bind the 3 attributes together into a composite key, which prevents identical entries from being entered. However, if 2 records like so are entered:

24/05/18 10:00am 10:15am

24/05/18 10:00am 10:30am



The records are accepted into the system. How do I prevent this? I'm trying to use data validation field right now (Help with preventing double bookings with variable lengths), but I'm not quite sure how to link 2 attributes together within it.

Thanks in advance!
You can only achieve such validation at the database level (when not using forms and VBA) using a CHECK constraint

ALTER TABLE Bookings 
ADD CONSTRAINT NoDoubleBookings CHECK(
       NOT EXISTS(
             SELECT 1 
             FROM Bookings b1, Bookings b2 
             WHERE b1.BookDate + b1.BookStart &lt; b2.BookDate + b2.BookStart 
             AND b1.BookDate + b1.BookEnd &gt; b2.BookDate + b2.BookStart
       )
)


More details on adding check constraints to Access databases can be found here