Maison >base de données >tutoriel mysql >Les déclencheurs MySQL peuvent-ils mettre à jour la même table à partir de laquelle ils sont appelés ?

Les déclencheurs MySQL peuvent-ils mettre à jour la même table à partir de laquelle ils sont appelés ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 04:00:02636parcourir

 Can MySQL Triggers Update the Same Table They Are Called From?

Déclencheurs MySQL : limitations liées à la mise à jour des mêmes lignes de table

Question : Comment définir les valeurs d'une nouvelle ligne dans un déclencheur MySQL et mettre à jour une autre ligne dans la même table ?

Une tentative a été effectuée pour créer un déclencheur qui effectuait les opérations suivantes lors de l'insertion d'une ligne :

  1. Calculer et définir des valeurs spécifiques pour la nouvelle ligne.
  2. Définissez la date de fin de la ligne précédente sur un jour avant la date de début de la nouvelle ligne.

Cependant, le déclencheur a généré une erreur : "Impossible de mettre à jour la répartition de la table dans les fichiers stockés fonction/déclencheur car il est déjà utilisé par l'instruction qui a invoqué cette fonction/déclencheur stocké."

Réponse :

Malheureusement, l'action souhaitée ne peut pas être effectuée à l'aide d'un déclencheur. Les déclencheurs MySQL sont limités dans leur capacité à mettre à jour la même table à partir de laquelle ils ont été appelés. Cette limitation est imposée pour éviter les problèmes d'intégrité des données qui pourraient résulter de mises à jour simultanées.

L'approche recommandée pour obtenir la fonctionnalité souhaitée consiste à créer une procédure stockée qui encapsule à la fois les opérations d'insertion et de mise à jour dans une seule transaction. Cela garantit que la base de données reste dans un état cohérent tout au long du processus.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn