所以我有两个这样的桌子...
我正在尝试创建一个触发器,该触发器将:
更新ext_words_count.count时ext_words.word被更新。 为了进一步使事情复杂化,
如果ext_words.word在ext_words_countwhen ext_words更新中不存在,我想将其插入ext_words_count并设置count为1。 我一直在寻找类似的问题: 1. 在使用自动增量字段插入触发器之前/之后,以及 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 ; 任何建议和指示,我们将不胜感激。或者可能是我忽略的另一种方法,并且一如既往地先谢谢您!
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。我在更新查询中错过了什么吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Grijesh的完美帮助和他使用条件语句的建议下,我能够获得一个执行两项任务的触发器。再次感谢Grijesh
DELIMITER $$ CREATE TRIGGER update_count AFTER INSERT ON ext_words FOR EACH ROW BEGIN IF NOT EXISTS (SELECT 1 FROM ext_words_count WHERE word = NEW.word) THEN INSERT INTO ext_words_count (word) VALUES (NEW.word); ELSE UPDATE ext_words_count SET word_count = word_count + 1 WHERE word = NEW.word; END IF; END $$
DELIMITER; 来源:stack overflow