同一个表上的SQL触发器更新

时间:2017-11-19 20:06:44

标签: mysql sql database-trigger

我想在MySQL中为下表创建一个触发器,这样如果出现的属性大于100,则状态属性将更新为“popular”。

表格的名称为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

1 个答案:

答案 0 :(得分:2)

您需要之前的更新触发器:

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似乎更简洁。