插入/更新事件的MySQL 觸發器
場景:
場景:如果 ext_words_count 中不存在該單字,則將其插入到 ext_words_count 中,並將計數設為 1。
初始嘗試: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 ;建議的初始觸發器僅處理更新,如下所示:
但是,此觸發器僅更新ext_words_count 中的現有單字,無法插入新單字。
更新了條件語句的方法: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 ;使用條件語句,它是可以將插入和更新操作組合到單一觸發器中:
此觸發器評估該單字是否已存在於ext_words_count 中。如果沒有,觸發器將插入該單字;否則,它會更新計數。觸發器在 ext_words 表上的每次插入操作後執行。
其他注意事項: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 ;為了處理插入,也建議為INSERT 操作使用單獨的觸發器:
此觸發器只是將單字插入ext_words_count 中,而不考慮它是否已經存在。 INSERT IGNORE 語句確保忽略重複插入。
結論:透過組合插入和更新觸發器或使用帶有條件語句的單一觸發器,可以實現追蹤 MySQL 表中字數的所需功能。以上是如何實作 MySQL 觸發器以在插入和更新事件時更新兩個表中的字數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!