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

MySQL spoušť nefunguje, jednoduchá syntaxe, nic složitého

Uložená funkce nebo spouštěč nemůže změnit tabulku, která se již používá (pro čtení nebo zápis) příkazem, který funkci nebo spouštěč vyvolal.

from:Omezení uložených programů .

Obecně u spouštěče, který se spouští při vložení, pokud chcete změnit vkládanou hodnotu, vytvořte spouštěč typu BEFORE INSERT a změňte hodnoty v NEW

také si všimli, že následující prohlášení stejně není to, co chcete.

update pos_table set PTS=((NEW.won_games*2)+(NEW.tie_games*1));

Aktualizuje celou tabulku, zatímco si myslím, že se pokoušíte aktualizovat pouze konkrétní řádek. V každém případě se jedná o jednoduchý výpočet, takže tento sloupec opravdu nemusíte ukládat. Stejně snadno můžete vypočítat hodnotu v době zobrazení a svůj kód mnohem zjednodušit + vyhnout se problému se spouštěčem.



  1. Funkce RAWTOHEX() v Oracle

  2. Mac OS X - EnvironmentError:mysql_config nebyl nalezen

  3. Jak namapovat řetězec na DB sekvenci v Hibernate

  4. FIND_IN_SET() vs. IN()