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

Je možné ve spouštěči MySQL nastavit uživatelskou proměnnou pomocí NEW.col a použít ji v aktualizačním dotazu?

To není možné, jak je popsáno u dynamického sql / Prepared Statement. Vygenerovalo by to Error Code: 1336. Dynamic SQL is not allowed in stored function or trigger při pokusu dokonce o CREATE TRIGGER .

Nejblíže k automatizaci se můžete dostat pomocí CREATE EVENT . Události jsou naplánované uložené programy, které běží podle plánu / intervalu podle vašeho výběru. Intervaly jsou:

Můžete nastavit "příznak" takříkajíc na řádek, jako je tabulka, kterou zobrazujete výše, která má spouštěč Po vložení. Událost by pak mohla provést Připravené prohlášení dynamicky a spustit jej.

Viz moji odpověď zde na Správě událostí .

Musím říci, že i když běží na události, to, co navrhujete, je téměř Vždy znak špatného návrhu schématu, který by dobře neobstál při vzájemném hodnocení.

Důvodem, proč je dynamický sql a připravený Stmt zakázáno, je to, že spouštěč musí být rychlý a dokonce i DDL by se dalo vplížit do řetězce a spustit. A DDL stmts jako ALTER TABLE jsou ve spouštěčích zakázány (jejich spuštění může doslova trvat hodiny).

Vaše schéma může mít jednu tabulku sdílenou se sloupcem ven_code jako sloupec diferenciátoru. Místo toho jste se rozhodli vytvořit nové tabulky pro každý ven_code . To je obvykle špatná volba designu a výkonu.

Pokud potřebujete pomoc s návrhem schématu, rád si o tom s vámi popovídám v chatovací místnosti.



  1. Jak změnit kurz?

  2. Příklady CURRENT_DATE – MySQL

  3. Způsoby sledování odstraněné databáze na serveru SQL

  4. MyBatis, jak získat automaticky generovaný klíč vložky? [MySql]