Поэтому у меня есть две таблицы, как это ...
MySQL триггер на события Insert/Update
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.
I рассматривали аналогичные вопросы:
1. Before/after insert trigger using auto increment field и
2. Using Trigger to update table in another database
пытается совместить 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:
Я выбрал для использования 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
. Есть что-то, что я пропустил в запросе на обновление ..?
Вы можете, как смотреть это, [MySQL Огонь Триггер для вставки и обновления] (http://stackoverflow.com/questions/1318224/mysql-fire-trigger-for-both-insert-and-update) Помогло ли мое решение? Какой результат я хотел бы улучшить. Помните, что вы не можете обновить ту же таблицу, на которую вы вызываете триггер в MySQL –
@GrijeshChauhan - Спасибо за ссылку! Я не могу заставить ваш ответ работать, но это потому, что я новичок в условных операторах MySQL, а не из-за вашего решения. – Drewness
Я имею в виду, что когда ext_words обновляется, если слово не находится в ext_words_count, тогда я хочу вставить его и сделать счет 1. В противном случае, если слово находится в ext_words_count, увеличьте количество на 1 ... – Drewness