我想在MySQL中为下表创建一个触发器,以便如果出现的属性大于100,则状态的属性更新为“受欢迎”。

表的名称是trigger

Repo_ID |Occurences |Status
1       | 50        | Normal
2       | 70        | Normal
3       | 190       | Popular


我已经尝试了以下方法。它没有工作。有什么建议么?

CREATE TRIGGER `A` after update
 ON `trigger`
FOR EACH ROW BEGIN
  IF (new.occurence > 100) THEN
    SET new.STATUS = "popular";
  ELSE SET new.STATUS = "normal";
  END IF;
END

最佳答案

您需要一个更新前触发器:

CREATE TRIGGER `A` before update ON `trigger`
FOR EACH ROW
BEGIN
    SET new.STATUS = (CASE WHEN new.occurences > 100 THEN 'popular' ELSE 'normal' END);
END;


我还删除了IF,因为CASE看起来更简洁。

关于mysql - 同一表上的SQL触发器更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47381466/

10-12 16:51