MySQL UPDATE-Trigger: wird nur ausgeführt, wenn sich Daten ändern
Mit MySQL-Triggern können Sie automatisch Aktionen ausführen, wenn bestimmte Datenbankereignisse (z. B. Tabellenaktualisierungen) auftreten. Manchmal möchten Sie jedoch möglicherweise einen Trigger, der nur ausgeführt wird, wenn sich die Daten in der aktualisierten Zeile tatsächlich ändern.
Frage:
Der integrierte „AFTER UPDATE“-Trigger unterscheidet nicht zwischen Updates, die Daten ändern, und Updates, die dies nicht tun. Dies kann zu einer unnötigen Triggerausführung führen, insbesondere wenn es sich um Tabellen mit vielen Spalten handelt.
Lösung:
Während es nicht möglich ist, Änderungen an allen Spalten direkt in einem Trigger zu vergleichen, gibt es eine Problemumgehung mithilfe von Zeitstempeln. Immer wenn eine Zeile geändert wird, aktualisiert MySQL automatisch die Zeitstempelspalte der Zeile. Daher können Sie anhand dieses Zeitstempels feststellen, ob sich die Daten geändert haben.
Umsetzung:
Hier ist ein Beispiel:
<code class="language-sql">CREATE TRIGGER ins_sum AFTER UPDATE ON foo FOR EACH ROW BEGIN IF NEW.ts != OLD.ts THEN INSERT INTO bar (a, b) VALUES(NEW.a, NEW.b); END IF; END;</code>
Vorteile:
Hinweis:
Diese Lösung basiert auf dem automatischen Zeitstempel-Aktualisierungsverhalten von MySQL. Wenn Ihre Anwendung den Zeitstempel explizit aktualisiert, funktioniert sie möglicherweise nicht wie erwartet.
Das obige ist der detaillierte Inhalt vonWie kann ich dafür sorgen, dass ein MySQL-Trigger nur dann ausgeführt wird, wenn sich die Daten nach einem UPDATE tatsächlich ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!