所以,我有两个表是这样的...
ext_words
-------------
| id | word |
-------------
| 1 | this |
-------------
| 2 | that |
-------------
| 3 | this |
-------------
ext_words_count
---------------------
| id | word | count |
---------------------
| 1 | this | 2 |
---------------------
| 2 | that | 1 |
---------------------
我想创建一个触发器,它将会:
- 更新
ext_words_count.count
当ext_words.word
被更新。
为了进一步使问题复杂化,
- 如果
ext_words.word
不存在ext_words_count
时ext_words
更新,我想将它插入到ext_words_count
并设置count
为1。
我一直在寻找类似的问题:
1. 前/使用自动递增字段INSERT触发器后 ,和
2. 使用触发另一个数据库更新表
试图将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 ;
任何建议和方向不胜感激。 或者可能是另一种方法,我忽略了,并提前一如既往的感谢!
更新:
我已经选择了,因为我不是那么熟悉MySQL的条件语句中使用2个触发器,一个用于INSERT和一个进行更新。
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
。 有什么我更新查询错过..?