Ich habe eine Join-Tabelle mit 2 Tabellen (A und C) mit n:m-Beziehung. Die Join-Tabelle (B) enthält auch einige Informationen.
A ----- B ------ C
In Tabelle A habe ich eine Spalte „when_modified“, die ich immer auf dem neuesten Stand halten möchte, wenn sich etwas ändert. Dies sollte Änderungen an Tabelle B beinhalten.
Ich habe also einen Pre-Update-Trigger für Tabelle B mit der folgenden Abfrage
UPDATE A SET when_modified = NOW() WHERE id = NEW.id;
Das Problem ist, wenn ich jetzt eine Update-Abfrage ausführe (Join auf B), erhalte ich die folgende Fehlermeldung
Tabelle „A“ in einer gespeicherten Funktion/einem gespeicherten Trigger kann nicht aktualisiert werden, da sie bereits von einer Anweisung verwendet wird, die diese gespeicherte Funktion/diesen gespeicherten Trigger aufruft.
Update B vv JOIN A v on vv.id = v.id SET vv.block = 1 WHERE v.status = 'finished'
您需要重写 UPDATE 语句。
您不能在触发器中进行更新,否则可能会发生这种情况。无限循环
但是简单的改变就会产生同样的效果
小提琴