sql >> Database teknologi >  >> RDS >> Mysql

Underforespørgsel som genereret kolonne i mysql?

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

Det er rimeligt, at udtrykket for en genereret kolonne kun kan referere kolonner i samme række. Den genererede kolonne kan ikke bruge underforespørgsler eller henvise til andre tabeller eller funktioner med ikke-deterministisk output.

Antag, at genererede kolonner understøttede krydstabelreferencer. Overvej især tilfældet med STORED genererede kolonner.

Hvis du opdaterer en tabel, skal MySQL også opdatere eventuelle referencer i genererede kolonner andre steder i databasen, hvis de refererer til den række, du har opdateret. Det ville være komplekst og dyrt for MySQL at opspore alle disse referencer.

Overvej derefter at tilføje indirekte referencer gennem lagrede funktioner.

Overvej derefter, at din opdatering er til en InnoDB-tabel i en transaktion, men den genererede kolonne kan være i en ikke-transaktionstabel (MyISAM, MEMORY, ARCHIVE, etc.). Skal din opdatering afspejles i de genererede kolonner, når du laver den? Hvad hvis du ruller tilbage? Skal din opdatering afspejles på det tidspunkt, du forpligter dig? Hvordan skal MySQL så "sætte i kø" ændringer for at gælde for disse tabeller? Hvad hvis flere transaktioner begår opdateringer, der påvirker den genererede kolonnereference? Hvilken skal vinde, den, der sidst anvendte ændringen, eller den, der forpligtede sig sidst?

Af disse grunde er det ikke praktisk eller effektivt at tillade, at genererede kolonner refererer til andet end kolonnerne i den samme række i den samme tabel.



  1. Korrekt persisterede beregnede kolonner

  2. lagrede procedurer og mysql_insert_id problem

  3. SQLAlchemy og joins, vi har ingen fremmednøgler

  4. MySQL – Gendan tabt præstationsskemadatabase