sql >> Databasteknik >  >> RDS >> Mysql

mysql - INFOGA datumintervall i datumkolumner OM datum inte överlappar befintliga

Tyvärr är det omöjligt att använda MySQL. Eller åtminstone praktiskt taget. Det föredragna sättet skulle vara att använda SQL CHECK-begränsningar, dessa finns i SQL-språkstandarden. MySQL stöder dem dock inte.

Se:https://dev.mysql.com/doc /refman/5.7/en/create-table.html

Det verkar som om PostgreSQL stöder CHECK-begränsningar på tabeller, men jag är inte säker på hur lönsamt det är för dig att byta databasmotor eller om det till och med är värt besväret att bara använda den funktionen.

I MySQL kan en utlösare användas för att lösa detta problem, som skulle kontrollera efter överlappande rader innan infogningen/uppdateringen inträffar och ge ett fel med SIGNAL påstående. (Se:https://dev.mysql.com/doc/ refman/5.7/en/signal.html ) Men för att använda den här lösningen måste du använda en uppdaterad MySQL-version.

Bortsett från rena SQL-lösningar, görs detta vanligtvis i applikationslogik, så vilket program som än använder MySQL-databasen kontrollerar vanligtvis för denna typ av begränsningar genom att begära varje rad som överträds av den nya posten i en SELECT COUNT(id) ... påstående. Om det returnerade antalet är större än 0 gör det helt enkelt inte till infogningen/uppdateringen.




  1. Hur man får dagen från en dejt i T-SQL

  2. SQLite Like() Funktion med exempel

  3. Har inte databaslås! i android

  4. Eliminera underfrågan för genomsnittligt numeriskt värde