Maison > base de données > tutoriel mysql > Comment maintenir efficacement le nombre de mots à l'aide des déclencheurs MySQL dans les scénarios d'insertion/mise à jour ?

Comment maintenir efficacement le nombre de mots à l'aide des déclencheurs MySQL dans les scénarios d'insertion/mise à jour ?

DDD
Libérer: 2024-11-11 22:33:03
original
566 Les gens l'ont consulté

How to Efficiently Maintain Word Counts Using MySQL Triggers in Insert/Update Scenarios?

Déclencheurs MySQL pour une manipulation efficace des données dans les scénarios d'insertion/mise à jour

Considérez deux tableaux : ext_words et ext_words_count. L'objectif est de créer un déclencheur qui maintient le nombre de mots dans ext_words_count chaque fois que la table ext_words est mise à jour.

Pour cette tâche, vous avez initialement tenté d'utiliser un seul déclencheur :

DELIMITER $$
CREATE TRIGGER update_count
AFTER UPDATE ON ext_words
FOR EACH ROW
BEGIN

  UPDATE ext_words_count
    SET word_count = word_count + 1
  WHERE word = NEW.word;

END;
$$
DELIMITER ;
Copier après la connexion

Cependant, ce déclencheur ne tenait pas compte du cas où le mot mis à jour n'existait pas dans ext_words_count. Pour résoudre ce problème, vous avez envisagé d'utiliser des déclencheurs distincts pour les opérations d'insertion et de mise à jour :

DELIMITER $$
CREATE TRIGGER insert_word AFTER INSERT ON ext_words
  FOR EACH ROW
    BEGIN
      INSERT IGNORE INTO ext_words_count (word) VALUES (NEW.word);
    END;
$$
DELIMITER ;

DELIMITER $$
CREATE TRIGGER update_word AFTER UPDATE ON ext_words
  FOR EACH ROW
    BEGIN
      UPDATE ext_words_count 
      SET word_count = word_count + 1 
      WHERE word = NEW.word;
    END;
$$
DELIMITER ;
Copier après la connexion

Malgré le bon fonctionnement du déclencheur d'insertion, le déclencheur de mise à jour n'a toujours pas réussi à incrémenter le nombre.

En fin de compte, vous découvert une solution alternative utilisant des instructions conditionnelles dans un seul déclencheur :

DELIMITER $$ 
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 $$    
DELIMITER;   
Copier après la connexion

Ce déclencheur vérifie si le mot mis à jour existe dans ext_words_count. Sinon, il insère le mot dans le tableau. Sinon, il incrémente le nombre de mots correspondant. En tirant parti des instructions conditionnelles, vous pouvez désormais maintenir efficacement le nombre de mots à l'aide d'un seul déclencheur.

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal