Итак, у меня есть две таблицы, подобные этой...
ext_words
-------------
| id | word |
-------------
| 1 | this |
-------------
| 2 | that |
-------------
| 3 | this |
-------------
ext_words_count
---------------------
| id | word | count |
---------------------
| 1 | this | 2 |
---------------------
| 2 | that | 1 |
---------------------
Я пытаюсь создать триггер, который будет:
- update
ext_words_count.count
при обновленииext_words.word
.
Чтобы еще больше усложнить ситуацию,
- Если
ext_words.word
не существует вext_words_count
, когда обновляетсяext_words
, я хотел бы вставить его вext_words_count
и установитьcount
как 1.
Я рассматривал похожие вопросы:
1. До/после запуска триггера с использованием поля автоматического увеличения и
2. Использование Trigger для обновления таблицы в другой базе данных
пытаясь объединить 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 ;
Приветствуются любые советы и указания. Или, возможно, другой метод, который я забыл и как всегда заблаговременно заблаговременно!
UPDATE:
Я выбрал использование двух триггеров, один для 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
. Есть что-то, что я пропустил в запросе обновления.?