Maison > Article > base de données > Comment les déclencheurs MySQL peuvent-ils être utilisés pour mettre à jour une table associée lors d'événements d'insertion ou de mise à jour ?
Utilisation de déclencheurs MySQL pour gérer les événements d'insertion et de mise à jour
Pour répondre au besoin de mise à jour d'une table associée ("ext_words_count") lors de l'insertion ou mise à jour d'une table primaire ("ext_words"), des déclencheurs MySQL peuvent être utilisés.
Comprendre le Problème
L'objectif est de créer un déclencheur qui effectue les opérations suivantes :
Tentatives précédentes et déclarations conditionnelles
Le déclencheur fourni a tenté de mettre à jour "word_count" en utilisant :
UPDATE ext_words_count SET word_count = word_count + 1 WHERE word = NEW.word;
Cependant, cette requête met uniquement à jour les enregistrements existants et ne parvient pas à gérer les insertions.
Pour résoudre ce problème, les instructions conditionnelles peuvent être utilisé dans le déclencheur. Par exemple, ce qui suit vérifie l'existence d'un enregistrement dans "ext_words_count" :
IF NOT EXISTS (SELECT 1 FROM ext_words_count WHERE word = NEW.word)
En fonction de cette condition, le déclencheur peut exécuter une opération d'insertion ou de mise à jour selon les besoins.
Déclencheur unique pour l'insertion et la mise à jour
À l'aide d'instructions conditionnelles, un seul déclencheur peut être créé pour gérer les deux insertions et mettre à jour les événements :
CREATE TRIGGER update_count AFTER INSERT ON ext_words FOR EACH ROW BEGIN IF NOT EXISTS (SELECT 1 FROM ext_words_count WHERE word = NEW.word) THEN INSERT INTO ext_words_count (word) VALUES (NEW.word); ELSE UPDATE ext_words_count SET word_count = word_count + 1 WHERE word = NEW.word; END IF; END
Insertion et mise à jour
Maintenant, lors de l'insertion ou de la mise à jour de "ext_words", ce déclencheur garantit que "ext_words_count" est mis à jour ou inséré selon les besoins. Les tests confirment que les deux scénarios sont gérés correctement.
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!