6
votes

MySQL Trigger - Supprimer après la mise à jour

Pour le cas d'essai dans un projet, je dois supprimer un enregistrement si l'un des champs répond à une des conditions. Le plus facile semble être simple déclencheur: xxx

mais je suppose que j'ai eu une erreur:

Set de test de mise à jour res = 3 où id = 1;
Erreur 1442 (HY000): Impossible de mettre à jour la table 'Test' dans la fonction / déclenchement stockée car il est déjà utilisé par l'instruction qui a appelé cette fonction / déclenchement enregistrée.

Comment peut-on effectuer uniquement en ayant accès à la base de données? Je veux dire que je ne devrais pas changer l'application testée.


0 commentaires

3 Réponses :


2
votes

Ce que vous devrez peut-être faire est d'utiliser l'insertion avant la gâchette pour vérifier si l'enregistrement étant ajouté n'est pas valide.

Ceci donc question fournit des détails sur la façon de dipose de l'enregistrement non valide: Prévenir l'insertion

Le suppléant consiste à modifier votre programme pour insérer un enregistrement dans une autre table qui a une gâchette pour purger la table souhaitée.


0 commentaires

2
votes

Dans une gâchette, vous ne pouvez pas modifier la table à laquelle appartient la gâchette.
Vous ne pouvez pas non plus quelque chose qui modifie indirectement cette table.

Il y a cependant quelques autres choses que vous pouvez faire. Si vous ne supprimez pas une ligne, mais ajoutez un champ supprimé alors vous pouvez marquer comme étant supprimé comme. xxx

Notez que la gâchette doit être avant si vous souhaitez modifier quoi que ce soit dans la ligne.

Vous pouvez ajouter un rappel de suppression à une table temporaire et testez ce tableau après votre déclaration de mise à jour. xxx

Vous devez maintenant modifier votre instruction de mise à jour à: xxx

bien sûr si vous Vos lignes Vous pouvez simplifier le code de suppression à: xxx


0 commentaires

-1
votes

Mes quelques centimes: - L'ajout de la colonne «supprimée» est considérée comme une modification de la structure de la table. Par conséquent, non recommandé sauf si c'est un nouveau développement.

Si c'est une application héritée, il vaut mieux - Ajoutez un rappel de suppression à une table temporaire et testez ce tableau après votre relevé de mise à jour.


0 commentaires