Desværre er det umuligt at bruge MySQL. Eller i det mindste praktisk talt. Den foretrukne måde ville være at bruge SQL CHECK-begrænsninger, disse er i SQL-sprogstandarden. MySQL understøtter dem dog ikke.
Se:https://dev.mysql.com/doc /refman/5.7/da/create-table.html
Det ser ud til, at PostgreSQL understøtter CHECK-begrænsninger på tabeller, men jeg er ikke sikker på, hvor levedygtigt det er for dig at skifte databasemotor, eller om det endda er besværet værd bare at bruge den funktion.
I MySQL kunne en trigger bruges til at løse dette problem, som ville kontrollere for overlappende rækker, før indsættelsen/opdateringen finder sted, og give en fejl ved hjælp af SIGNAL
udmelding. (Se:https://dev.mysql.com/doc/ refman/5.7/da/signal.html
) Men for at bruge denne løsning skal du bruge en opdateret MySQL-version.
Bortset fra rene SQL-løsninger, sker dette typisk i applikationslogik, så uanset hvilket program, der tilgår MySQL-databasen, tjekker det typisk for denne slags begrænsninger ved at anmode om hver række, der overtrædes af den nye post i en SELECT COUNT(id) ...
udmelding. Hvis det returnerede antal er større end 0, gør det simpelthen ikke til indsættelsen/opdateringen.