Maison > base de données > tutoriel mysql > le corps du texte

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

Susan Sarandon
Libérer: 2024-10-29 04:00:02
original
554 Les gens l'ont consulté

 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!