Heim  >  Artikel  >  Datenbank  >  Wie kann ich dieselbe Tabelle innerhalb eines MySQL-Triggers aktualisieren?

Wie kann ich dieselbe Tabelle innerhalb eines MySQL-Triggers aktualisieren?

Susan Sarandon
Susan SarandonOriginal
2024-11-01 16:58:02930Durchsuche

How can I update the same table within a MySQL trigger?

MySQL-Trigger-Workaround für die Aktualisierung derselben Tabelle

MySQL schränkt Trigger von Natur aus bei der Aktualisierung von Zeilen in derselben Tabelle ein, der sie zugewiesen sind, und verhindert so rekursive Aufrufe . Trotz dieser Einschränkung gibt es eine praktikable Problemumgehung.

Vorgeschlagene Problemumgehung

Anstatt Zeilen innerhalb eines Triggers direkt zu aktualisieren, nutzen Sie eine gespeicherte Prozedur, die die gewünschte Logik ausführt. Diese Methode trennt die Zeilenaktualisierungsaufgabe vom Trigger und ermöglicht Ihnen, die Einschränkung zu umgehen.

Beispiel

Stellen Sie sich das folgende Szenario vor:

<code class="sql">CREATE TABLE MyTable (
  id INT PRIMARY KEY,
  attribute VARCHAR(255)
);

-- Trigger to insert a row into MyTable for each new parent product record
CREATE TRIGGER my_trigger AFTER INSERT ON Products
FOR EACH ROW
BEGIN
  -- Issue SQL statement to call a stored procedure that performs the insert
  CALL insert_attribute(NEW.id, 'Value');
END;</code>

Im obigen Beispiel ruft der Trigger my_trigger die gespeicherte Prozedur insert_attribute auf, um eine Zeile in die MyTable einzufügen, wenn ein neuer Datensatz in die Products-Tabelle eingefügt wird, wodurch effektiv die Funktionalität einer direkten Zeilenaktualisierung innerhalb des Triggers nachgeahmt wird.

Zusätzliche Überlegungen

Diese Problemumgehung dient zwar als funktionale Lösung, es ist jedoch wichtig zu beachten, dass sie sich in Bezug auf Leistung und Wartbarkeit von einem herkömmlichen Auslöser unterscheidet. Gespeicherte Prozeduren können im Vergleich zu direkten Triggeraktualisierungen zu einem zusätzlichen Overhead und einer höheren Komplexität des Datenbanksystems führen.

Das obige ist der detaillierte Inhalt vonWie kann ich dieselbe Tabelle innerhalb eines MySQL-Triggers 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