sql >> Database teknologi >  >> RDS >> Mysql

Min MySQL-trigger virker ikke, simpel syntaks, ikke kompliceret

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.



  1. MariaDB LENGTHB() Forklaret

  2. sql server vælg første række fra en gruppe

  3. Sådan fungerer REPEAT() i MariaDB

  4. Tilføjelse af data til en Cloud Firestore-database