MySQL-Fehler: Tabelle in gespeicherter Funktion/Trigger kann nicht aktualisiert werden
Frage:
Beim Versuch, mithilfe eines Triggers eine neue Zeile in eine MySQL-Tabelle einzufügen, wird der folgende Fehler angezeigt tritt auf:
Can't update table 'brandnames' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Antwort:
Dieser Fehler tritt auf, wenn der INSERT-Trigger versucht, die Tabelle zu ändern, die ihn aufgerufen hat. MySQL verbietet dieses Verhalten aus zwei Hauptgründen:
Um diesen Fehler zu beheben, sollten Sie die folgenden Ansätze in Betracht ziehen:
Um beispielsweise ein Kurznamenfeld aus den ersten beiden Zeichen eines vollständigen Namens zu erstellen, kann der folgende BEFORE INSERT-Trigger verwendet werden:
CREATE TRIGGER `capital` BEFORE INSERT ON `brandnames` FOR EACH ROW BEGIN SET NEW.short_name = CONCAT(UCASE(LEFT(NEW.full_name,1)) , LCASE(SUBSTRING(NEW.full_name,2))) END
Das obige ist der detaillierte Inhalt vonWarum kann ich eine Tabelle innerhalb einer in MySQL gespeicherten Funktion oder eines Triggers nicht aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!