所以我有这样的两张桌子
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_count在ext_words_count中不存在ext_words.word,我想将其插入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 ;
任何建议和方向非常感谢。或者可能是我忽略的另一种方法,一如既往地感谢!
更新:
我选择使用2个触发器,一个用于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 ;
INSERT查询工作非常好,但UPDATE查询不会更新word_count。在更新查询中有没有我想过的东西?