Helaas is dit onmogelijk met alleen MySQL. Of in ieder geval praktisch. De voorkeursmanier zou het gebruik van SQL CHECK-beperkingen zijn, deze zijn in de SQL-taalstandaard. MySQL ondersteunt ze echter niet.
Zie:https://dev.mysql.com/doc /refman/5.7/en/create-table.html
Het lijkt erop dat PostgreSQL wel CHECK-beperkingen op tabellen ondersteunt, maar ik weet niet zeker hoe haalbaar het voor u is om van database-engine te veranderen of dat het zelfs de moeite waard is om die functie te gebruiken.
In MySQL zou een trigger kunnen worden gebruikt om dit probleem op te lossen, die zou controleren op overlappende rijen voordat het invoegen/updaten plaatsvindt en een fout zou genereren met behulp van de SIGNAL
uitspraak. (Zie:https://dev.mysql.com/doc/ refman/5.7/nl/signaal.html
) Om deze oplossing te gebruiken, moet u echter een up-to-date MySQL-versie gebruiken.
Afgezien van pure SQL-oplossingen, wordt dit meestal gedaan in applicatielogica, dus welk programma dan ook toegang heeft tot de MySQL-database, controleert meestal op dit soort beperkingen door elke rij op te vragen die wordt geschonden door de nieuwe invoer in een SELECT COUNT(id) ...
uitspraak. Als het geretourneerde aantal groter is dan 0, wordt het gewoon niet ingevoegd/bijgewerkt.