Mise à jour d'une autre ligne dans la même table à l'aide de déclencheurs
Le problème :
Maintenir les enregistrements avec des périodes qui se chevauchent, il faut souvent mettre à jour la date de fin des enregistrements précédents lorsqu'un nouveau est inséré avec une date de début qui chevauche la plage existante.
La tentative originale :
Le déclencheur fourni tente de mettre à jour la date de fin d'une ligne existante avec la valeur ADDDATE(NEW.startDate, -1) où procKey correspond à la nouvelle ligne et la date de fin est 20501231. Cependant, cette approche entraîne l'erreur « Impossible de mettre à jour ». table 'split' dans la fonction/le déclencheur stocké car elle est déjà utilisée par l'instruction qui a invoqué cette fonction/le déclencheur stocké."
La solution :
Malheureusement, les déclencheurs ne mettre à jour directement les autres lignes de la même table que la ligne qui a déclenché le déclencheur. Au lieu de cela, une approche alternative est requise.
Utilisation d'une procédure stockée :
Créez une procédure stockée qui encapsule la logique suivante :
Cette approche permet de mettre à jour plusieurs lignes de la même table au sein d'une seule transaction, évitant ainsi conflits qui peuvent survenir avec des déclencheurs.
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!