Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine Tabelle innerhalb eines Triggers nach einer Aktualisierung derselben Tabelle in SQL sicher aktualisieren?

Wie kann ich eine Tabelle innerhalb eines Triggers nach einer Aktualisierung derselben Tabelle in SQL sicher aktualisieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-21 16:15:14950Durchsuche

How Can I Safely Update a Table Within a Trigger After an Update on the Same Table in SQL?

Aktualisieren einer Tabelle in einem Trigger nach einer Aktualisierung derselben Tabelle

In SQL wird eine Tabelle in einem Trigger nach einer Aktualisierung derselben Tabelle aktualisiert Dieselbe Tabelle stellt ein potenzielles Problem dar. Dies liegt daran, dass die Tabelle bereits für den Aktualisierungsvorgang gesperrt ist und der Versuch, innerhalb eines als Teil derselben Transaktion ausgeführten Triggers auf die Tabelle zuzugreifen, zu einem Konflikt führen kann.

Um diese Einschränkung zu umgehen, können Sie die aktualisieren betroffene Spalten im Trigger durch Verwendung der BEFORE-Option anstelle von AFTER. Dadurch können Sie die Spalten der Tabelle aktualisieren, bevor der ursprüngliche Aktualisierungsvorgang stattfindet, und so sicherstellen, dass die erforderlichen Änderungen an der Tabelle vorgenommen werden, bevor die Transaktion abgeschlossen wird.

Betrachten Sie das folgende Beispiel:

CREATE TRIGGER upd_total_votes BEFORE UPDATE ON products_score
FOR EACH ROW
BEGIN
    SET new.votes_total = new.votes_1 + new.votes_2 + new.votes_3 + new.votes_4 + new.votes_5
END
;

In diesem Beispiel wird der Trigger vor jedem Aktualisierungsvorgang für die Tabelle „products_score“ ausgeführt. Es berechnet den neuen Wert für die Spalte votes_total basierend auf den Werten der aktualisierten Spalten (votes_1 bis votes_5) und speichert ihn in der virtuellen Spalte new.votes_total, die vom Triggerkontext bereitgestellt wird.

Wenn Sie die Tabelle aktualisieren , stellt der Trigger sicher, dass die Spalte votes_total entsprechend aktualisiert wird, auch wenn die Update-Anweisung die Spalte votes_total selbst nicht explizit aktualisiert.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Tabelle innerhalb eines Triggers nach einer Aktualisierung derselben Tabelle in SQL sicher aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn