En lagret funktion eller trigger kan ikke ændre en tabel, der allerede er i brug (til læsning eller skrivning) ved hjælp af den sætning, der påkaldte funktionen eller triggeren.
fra:Restriktioner for lagrede programmer .
Generelt med en trigger, der udløses ved indsættelse, hvis du vil ændre den værdi, der indsættes, laver du triggeren af typen BEFORE INSERT
og ændre værdierne i NEW
har også bemærket, at følgende udsagn alligevel ikke er, hvad du ønsker.
update pos_table set PTS=((NEW.won_games*2)+(NEW.tie_games*1));
Det opdaterer hele tabellen, mens jeg tror, du kun forsøger at opdatere en særskilt række. Under alle omstændigheder er dette en simpel beregning, så du behøver ikke rigtig at gemme denne kolonne. Du kan lige så nemt beregne værdien på visningstidspunktet og gøre din kode en hel del enklere + undgå problemet med triggeren.