„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 22.12.2024
Durchsuche:734

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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3