mysql 触发器 插入或者更新_MySQL触发器在插入/更新事件

MySQL触发器在插入/更新事件

所以我有两个这样的桌子

ext_words ------------- | id | word | ------------- | 1 | this | ------------- | 2 | that | ------------- | 3 | this | ------------- ext_words_count --------------------- | id | word | count | --------------------- | 1 | this | 2 | --------------------- | 2 | that | 1 | ---------------------

我试图创build一个触发器,将:

更新ext_words_count.count时更新ext_words_count.count 。

事情进一步复杂化,

如果ext_words.word在ext_words.word中不存在,当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 ;

任何意见和方向,不胜感激。 或者可能的其他方法,我已经忽略了,并一如既往的感谢!

更新:

我select使用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的完美帮助和他使用条件语句的build议,我能够得到一个触发器来完成这两项任务。 再次感谢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;

避免使用像count这样的关键字被sql方法使用一段时间它的创build错误,但一些运行良好

DELIMITER $$ CREATE TRIGGER update_count AFTER UPDATE ON ext_words FOR EACH ROW BEGIN SELECT count INTO @x FROM ext_words_count LIMIT 1; UPDATE ext_words_count SET count = @x + 1 WHERE word = NEW.word; END; $$ DELIMITER ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值