MySQL-Trigger für effiziente Datenmanipulation in Einfüge-/Aktualisierungsszenarien
Betrachten Sie zwei Tabellen: ext_words und ext_words_count. Das Ziel besteht darin, einen Trigger zu erstellen, der die Anzahl der Wörter in ext_words_count bei jeder Aktualisierung der ext_words-Tabelle beibehält.
Für diese Aufgabe haben Sie zunächst versucht, einen einzelnen Trigger zu verwenden:
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 ;
Dieser Auslöser berücksichtigte jedoch nicht den Fall, dass das aktualisierte Wort nicht in ext_words_count vorhanden war. Um dieses Problem zu beheben, haben Sie in Betracht gezogen, separate Trigger für Einfüge- und Aktualisierungsvorgänge zu verwenden:
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 ;
Obwohl der Einfügetrigger erfolgreich funktionierte, konnte der Aktualisierungstrigger die Anzahl immer noch nicht erhöhen.
Letztendlich Sie entdeckte eine alternative Lösung mit bedingten Anweisungen in einem einzigen Trigger:
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;
Dieser Trigger prüft, ob das aktualisierte Wort in ext_words_count vorhanden ist. Wenn nicht, wird das Wort in die Tabelle eingefügt. Andernfalls wird die entsprechende Wortanzahl erhöht. Durch die Nutzung bedingter Anweisungen können Sie jetzt die Wortanzahl mit einem einzigen Auslöser effizient aufrechterhalten.
Das obige ist der detaillierte Inhalt vonWie kann die Wortanzahl mithilfe von MySQL-Triggern in Einfüge-/Aktualisierungsszenarien effizient verwaltet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!