我想在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/