MySQL触发条件语句并更新另一个表

时间:2014-08-17 12:33:42

标签: mysql sql triggers delimiter conditional-statements

在MySQL 5.5上,我试图编写一个触发器来执行以下操作:

  • 检查插入条件(group_id在8-20之间?)
  • 如果条件为真,则在另一个表上使用相同的user_id更新用户,名为phpbb_users。
  • 此另一个表的更新是从具有触发器的表上的插入中将user_rank设置为NEW.group_id。
  • 否则,什么也不做。

根本没有经验,而且卡住了。我在运行查询时无法正常工作。这是我到目前为止所做的。

DELIMITER $$

    CREATE OR REPLACE TRIGGER upd_rank AFTER INSERT ON `phpbb_user_group`
    FOR EACH ROW BEGIN
      IF (NEW.group_id BETWEEN 8 AND 20) THEN
            UPDATE phpbb_users
            SET user_rank=NEW.group_id 
            WHERE user_id=NEW.user_id;
       ELSE 
            UPDATE phpbb_users
            SET user_rank='0'
            WHERE user_id=NEW.user_id;
       END IF;
    END$$;

DELIMITER;

(注意," else"子句实际上是不必要的 - 很高兴任何改进此代码的建议!)

1 个答案:

答案 0 :(得分:1)

如果您只想摆脱else尝试

CREATE TRIGGER upd_rank AFTER INSERT ON `phpbb_user_group`
FOR EACH ROW 
   UPDATE phpbb_users
   SET user_rank=IF(NEW.group_id BETWEEN 8 AND 20,NEW.group_id,"0")
   WHERE user_id=NEW.user_id;