所以我有两个像这样的表格...
ext_words
-------------
| id | word |
-------------
| 1 | this |
-------------
| 2 | that |
-------------
| 3 | this |
-------------
ext_words_count
---------------------
| id | word | count |
---------------------
| 1 | this | 2 |
---------------------
| 2 | that | 1 |
---------------------
我正在尝试创建一个触发器,可以:
- 在更新
ext_words.word
时更新ext_words_count.count
。
更加复杂的是,
- 当更新
ext_words
时,如果ext_words.word
不存在于ext_words_count
中,我希望将其插入到ext_words_count
中,并将count
设置为1。
我查看了类似的问题:
1. 使用自动增量字段的Before / after insert触发器,和
2. 使用触发器更新另一个数据库中的表
试图将两者结合起来。以下是我的部分代码:
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 ;
非常感谢任何建议和指引。或者可能有我忽略的其他方法,预先致谢!
更新:
我选择使用两个触发器,一个用于 INSERT,一个用于 UPDATE 因为我对 MySQL 中的条件语句不是很熟悉。
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 ;
插入查询功能良好,但更新查询未更新word_count
。在更新查询中是否有我遗漏的内容..?