MySQL-Fehler: Aktualisierungen in gespeicherten Funktionen/Triggern verboten
Wenn Sie versuchen, eine Tabelle innerhalb einer in MySQL gespeicherten Funktion oder eines Triggers zu aktualisieren, kann dies passieren stoßen Sie auf den Fehler:
Error: Can't update table 'brandnames' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Verstehen Sie das Fehler
Dieser Fehler ist auf die Einschränkung in MySQL zurückzuführen, die das Ändern einer Tabelle während der Ausführung eines INSERT-Triggers verbietet. Solche Änderungen könnten möglicherweise zu Deadlocks oder unendlichen rekursiven Schleifen führen.
Fehler vermeiden
Um diesen Fehler zu vermeiden, ziehen Sie die folgenden Ansätze in Betracht:
NEU und ALT verwenden Felder:
Ändern Sie den Auslöser Kontext:
Beispiel für die Verwendung von BEFORE INSERT Auslöser:
Angenommen, Sie haben ein Feld „full_brand_name“ und müssen ein Feld „short_name“ erstellen, das die ersten beiden Buchstaben in Großbuchstaben enthält:
CREATE TRIGGER `capital` BEFORE INSERT ON `brandnames` FOR EACH ROW BEGIN SET NEW.short_name = CONCAT(UCASE(LEFT(NEW.full_brand_name,1)) , LCASE(SUBSTRING(NEW.full_brand_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!