sql >> Databáze >  >> RDS >> Mysql

Poddotaz jako generovaný sloupec v mysql?

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

Je rozumné, že výraz pro vygenerovaný sloupec může odkazovat pouze sloupce ve stejném řádku. Generovaný sloupec nemůže používat poddotazy ani odkazovat na jiné tabulky nebo funkce s nedeterministickým výstupem.

Předpokládejme, že vygenerované sloupce podporovaly odkazy na křížové tabulky. Zvažte zejména případ STORED generované sloupce.

Pokud aktualizujete tabulku, MySQL by také musela aktualizovat všechny odkazy ve vygenerovaných sloupcích jinde v databázi, pokud odkazují na řádek, který jste aktualizovali. Pro MySQL by bylo složité a nákladné vystopovat všechny tyto reference.

Pak zvažte přidání nepřímých odkazů prostřednictvím uložených funkcí.

Pak zvažte, že se vaše aktualizace týká tabulky InnoDB v transakci, ale vygenerovaný sloupec může být v netransakční tabulce (MyISAM, MEMORY, ARCHIVE atd.). Měla by se vaše aktualizace projevit v těchto vygenerovaných sloupcích, když ji provedete? Co když se vrátíš? Měla by se vaše aktualizace projevit v době, kdy se zavážete? Jak by se tedy měly změny MySQL „zařadit do fronty“, aby se uplatňovaly na tyto tabulky? Co když více transakcí potvrdí aktualizace, které ovlivňují vygenerovaný odkaz na sloupec? Který z nich by měl vyhrát, ten, který použil změnu jako poslední, nebo ten, který se zavázal jako poslední?

Z těchto důvodů není praktické ani efektivní umožnit vygenerovaným sloupcům odkazovat na cokoli jiného než na sloupce stejného řádku ve stejné tabulce.



  1. Jak povolit SSL/TLS pro MySQL v Ubuntu

  2. Chyba Android SQLite:číslo proměnné musí být mezi ?1 a ?999

  3. MySQL - Dotazování na nepřečtené zprávy spolu s poštovními zprávami

  4. Existuje v MySQL FIND_IN_SET podle indexu?