sql >> Databasteknik >  >> RDS >> Mysql

Min MySQL-trigger fungerar inte, enkel syntax, inte komplicerad

En lagrad funktion eller utlösare kan inte modifiera en tabell som redan används (för att läsa eller skriva) av den sats som anropade funktionen eller utlösaren.

från:Lagrade programbegränsningar .

Vanligtvis med en trigger som aktiveras vid infogning, om du vill ändra värdet som infogas gör du triggern av typen BEFORE INSERT och ändra värdena i NEW

märkte också att följande uttalande inte är vad du vill ha ändå.

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

Den uppdaterar hela tabellen medan jag tror att du bara försöker uppdatera en separat rad. Hur som helst, detta är en enkel beräkning så du behöver egentligen inte lagra den här kolumnen. Du kan lika enkelt beräkna värdet vid visningstidpunkten och göra din kod mycket enklare + undvika problemet med utlösaren.



  1. Hur man beräknar ålder i MariaDB

  2. Komma igång med PostgreSQL 11 på Ubuntu 18.04

  3. Hur man lägger till ett underformulär till ett formulär i Access 2016

  4. PostgreSQL rad till kolumner