Erreur MySQL : mises à jour interdites dans les fonctions/déclencheurs stockés
Lorsque vous essayez de mettre à jour une table dans une fonction ou un déclencheur stocké MySQL, vous pouvez rencontrez l'erreur :
Error: Can't update table 'brandnames' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Comprendre le Erreur
Cette erreur provient de la restriction de MySQL qui interdit de modifier une table pendant l'exécution d'un déclencheur INSERT. De telles modifications pourraient potentiellement conduire à des blocages ou à des boucles récursives infinies.
Éviter l'erreur
Pour éviter cette erreur, envisagez les approches suivantes :
Utilisez le NOUVEAU et l'ANCIEN Champs :
Modifier le déclencheur Contexte :
Exemple d'utilisation AVANT INSÉRER Déclencheur :
Supposons que vous ayez un champ full_brand_name et que vous deviez créer un champ short_name contenant les deux premières lettres en majuscules :
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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!