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.