J'exécute une requête MySQL. Cependant, lors de l'ajout d'une nouvelle ligne à partir de la saisie du formulaire, j'obtiens cette erreur :
Error: Can't update table 'brandnames' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
D'après le code :
CREATE TRIGGER `capital` AFTER INSERT ON `brandnames` FOR EACH ROW UPDATE brandnames SET bname = CONCAT( UCASE( LEFT( bname, 1 ) ) , LCASE( SUBSTRING( bname, 2 ) ) )
Que signifie cette erreur ?
La syntaxe correcte est :
Quand
INSERT
触发器触发时,您无法更改表。INSERT
certaines opérations de verrouillage peuvent être effectuées, ce qui peut entraîner un blocage. De plus, la mise à jour de la table à partir d'un déclencheur entraînera le déclenchement à nouveau du même déclencheur dans une boucle récursive infinie. Ces deux raisons expliquent pourquoi MySQL vous empêche de faire cela.Cependant, en fonction de ce que vous souhaitez réaliser, vous pouvez utiliser
NEW.fieldname
访问新值,甚至可以使用旧值 - 如果执行UPDATE
-- 与OLD
.Si vous avez un champ nommé
full_brand_name
的行,并且您想在small_name
utilisant les deux premières lettres comme nom court, vous pouvez utiliser :