MySQL触发更新

时间:2016-06-05 23:11:21

标签: mysql triggers

我有一个包含2个表的数据库。一个表包含有关引用(作业引用)的数据,另一个表包含投票。为了进入投票阶段,您需要5个参考。在另一个数据库中,我必须在有5个引用后更改group_id。

我试图使用类似下面的内容:

CREATE TRIGGER update_group AFTER UPDATE ON refs
  FOR EACH ROW
    BEGIN
      IF (SELECT recruit_id from refs where count(refs) = 5) THEN
        UPDATE users.members
        SET group_id=10
        WHERE member_id=recruit_id;
    END;

这样的事情是否可行?如果这不起作用,我的后备是在每5分钟运行一次的cron作业中使用bash脚本,但触发器看起来效率更高(并且是瞬时的)

1 个答案:

答案 0 :(得分:0)

您可以使用NEW.分别在更改后引用受影响的recruit_id,进行计数并相应地更新外表。

CREATE TRIGGER update_group AFTER UPDATE ON refs
  FOR EACH ROW
    BEGIN
      SELECT @refs_no := count(*) from refs where recruit_id = NEW.recruit_id 
      IF (@refs_no = 5) THEN
        UPDATE users.members
        SET group_id=10
        WHERE member_id=NEW.recruit_id;
    END;