Heim > Datenbank > MySQL-Tutorial > Wie kann ich dieselbe Tabelle nach einer Einfügung ohne Triggerfehler aktualisieren?

Wie kann ich dieselbe Tabelle nach einer Einfügung ohne Triggerfehler aktualisieren?

Barbara Streisand
Freigeben: 2024-12-10 22:22:10
Original
750 Leute haben es durchsucht

How Can I Update the Same Table After an Insert Without Trigger Errors?

Auslöser für die Aktualisierung derselben Tabelle nach dem Einfügen: Ein alternativer Ansatz

Problemübersicht

Sie Versuchen Sie, einen Trigger für die Tabelle ACCOUNTS zu implementieren, der eine Spalte in derselben Tabelle basierend auf dem edit_on-Wert eines neu eingefügten Werts aktualisiert Reihe. Es tritt jedoch ein Fehler auf, da die Aktualisierung derselben Tabelle innerhalb eines Triggers, der sie aufgerufen hat, eingeschränkt ist.

Alternative Problemumgehung: Gespeicherte Prozedur

Um diese Einschränkung zu umgehen, Eine gespeicherte Prozedur kann verwendet werden, um sowohl den Einfüge- als auch den Aktualisierungsvorgang innerhalb einer einzigen Transaktion durchzuführen. Dieser Ansatz ermöglicht das manuelle Übertragen von Änderungen und ermöglicht so die gewünschten Aktualisierungen.

Implementierung gespeicherter Prozeduren

Hier ist ein Beispiel für eine gespeicherte Prozedur, mit der Sie Ihr Ziel erreichen:

DELIMITER $$
CREATE PROCEDURE InsertAndEditStatus(IN new_pk BIGINT)
BEGIN
  -- Insert new row into ACCOUNTS
  INSERT INTO ACCOUNTS (pk, user_id, edit_on, status)
  VALUES (new_pk, /* user_id */, NULL, 'A');
  
  -- Update existing row in ACCOUNTS
  UPDATE ACCOUNTS SET status='E' WHERE pk = NEW.edit_on;
  
  -- Commit transaction
  COMMIT;
END$$
DELIMITER ;
Nach dem Login kopieren

Verwendung

Um diese gespeicherte Prozedur zu verwenden, rufen Sie sie mit dem Primärschlüssel auf der neu eingefügten Zeile als Argument:

CALL InsertAndEditStatus(2147483726);
Nach dem Login kopieren

Diese Prozedur fügt eine neue Zeile mit dem angegebenen Primärschlüssel und den Standardwerten ein und aktualisiert dann die vorhandene Zeile, auf die durch die Spalte „edit_on“ in der neu eingefügten Zeile verwiesen wird, auf Geben Sie an, dass es bearbeitet wurde.

Das obige ist der detaillierte Inhalt vonWie kann ich dieselbe Tabelle nach einer Einfügung ohne Triggerfehler aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage