Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mein MySQL-Trigger funktioniert nicht, einfache Syntax, nicht kompliziert

Eine gespeicherte Funktion oder ein gespeicherter Trigger kann keine Tabelle ändern, die bereits (zum Lesen oder Schreiben) von der Anweisung verwendet wird, die die Funktion oder den Trigger aufgerufen hat.

aus:Gespeicherte Programmbeschränkungen .

Wenn Sie bei einem Trigger, der beim Einfügen ausgelöst wird, den eingefügten Wert ändern möchten, erstellen Sie im Allgemeinen den Trigger vom Typ BEFORE INSERT und ändern Sie die Werte in NEW

ist mir auch aufgefallen, dass die folgende Anweisung sowieso nicht das ist, was Sie wollen.

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

Es aktualisiert die gesamte Tabelle, während Sie meiner Meinung nach nur versuchen, eine bestimmte Zeile zu aktualisieren. Wie auch immer, dies ist eine einfache Berechnung, sodass Sie diese Spalte nicht wirklich speichern müssen. Sie können den Wert zum Zeitpunkt der Anzeige genauso einfach berechnen und Ihren Code viel einfacher gestalten + das Problem mit dem Trigger vermeiden.