sql >> Databasteknik >  >> RDS >> Mysql

Underfråga som genererad kolumn i mysql?

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

Det är rimligt att uttrycket för en genererad kolumn endast kan referera kolumner inom samma rad. Den genererade kolumnen kan inte använda underfrågor eller referera till andra tabeller eller funktioner med icke-deterministisk utdata.

Anta att genererade kolumner stödde korstabellsreferenser. Tänk särskilt på fallet med STORED genererade kolumner.

Om du uppdaterar en tabell måste MySQL också uppdatera eventuella referenser i genererade kolumner någon annanstans i databasen, om de refererar till raden du uppdaterade. Det skulle vara komplicerat och dyrt för MySQL att spåra alla dessa referenser.

Överväg sedan att lägga till indirekta referenser genom lagrade funktioner.

Tänk sedan på att din uppdatering är till en InnoDB-tabell i en transaktion, men den genererade kolumnen kan vara i en icke-transaktionstabell (MyISAM, MEMORY, ARCHIVE, etc.). Ska din uppdatering återspeglas i de genererade kolumnerna när du gör den? Vad händer om du rullar tillbaka? Ska din uppdatering återspeglas vid den tidpunkt då du binder dig? Hur ska MySQL "ställa i kö" ändringar för att gälla för dessa tabeller? Vad händer om flera transaktioner genomför uppdateringar som påverkar den genererade kolumnreferensen? Vilken ska vinna, den som tillämpade ändringen senast eller den som gjorde det sist?

Av dessa skäl är det inte praktiskt eller effektivt att tillåta genererade kolumner att referera till något annat än kolumnerna i samma rad i samma tabell.



  1. Anslutningssträngparametrar för textfilkällor

  2. Vet hur man återställer raderad tabell i SQL Server 2012 utan säkerhetskopiering

  3. få värden från tabellen endast för en specifik dag i mysql

  4. Hitta maxvärde och visa motsvarande värde från olika fält i SQL-servern