sql >> Database >  >> RDS >> Mysql

Subquery als gegenereerde kolom in mysql?

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

Het is redelijk dat de uitdrukking voor een gegenereerde kolom kan verwijzen naar alleen kolommen in dezelfde rij. De gegenereerde kolom kan geen subquery's gebruiken of verwijzen naar andere tabellen of functies met niet-deterministische uitvoer.

Stel dat gegenereerde kolommen kruistabelverwijzingen ondersteunen. Denk vooral aan het geval van STORED gegenereerde kolommen.

Als u een tabel bijwerkt, zou MySQL ook alle verwijzingen in gegenereerde kolommen elders in de database moeten bijwerken, als ze verwijzen naar de rij die u hebt bijgewerkt. Het zou voor MySQL ingewikkeld en duur zijn om al die referenties op te sporen.

Overweeg dan om indirecte verwijzingen toe te voegen via opgeslagen functies.

Bedenk dan dat uw update naar een InnoDB-tabel in een transactie is, maar dat de gegenereerde kolom zich mogelijk in een niet-transactietabel (MyISAM, MEMORY, ARCHIVE, etc.) bevindt. Moet uw update worden weergegeven in die gegenereerde kolommen wanneer u deze maakt? Wat als je terugrolt? Moet uw update worden weergegeven op het moment dat u zich vastlegt? Hoe moet MySQL dan veranderingen "in de wachtrij plaatsen" om op die tabellen toe te passen? Wat als meerdere transacties updates uitvoeren die van invloed zijn op de gegenereerde kolomverwijzing? Welke moet winnen, degene die de wijziging als laatste heeft toegepast of degene die het laatst is doorgevoerd?

Om deze redenen is het niet praktisch of efficiënt om gegenereerde kolommen te laten verwijzen naar iets anders dan de kolommen van dezelfde rij in dezelfde tabel.



  1. Oracle 10g accepteert een 5-cijferig jaar in een datum

  2. Foutcode:23 Geen bronnen bij het openen van het bestand

  3. Waarom geven de betreffende rijen 0 terug terwijl het bijwerken/verwijderen gelukt is?

  4. Heeft AWS RDS-codering met KMS invloed op de prestaties?