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

Mysql 同一表上的SQL触发器更新,mysql,sql,database-trigger,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`

我想在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
您需要更新前触发器:

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
看起来更简洁。

您需要更新前触发器:

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
看起来更简洁。

您遇到了什么错误?查看这些链接:我得到了以下错误:操作失败:将SQL脚本应用到数据库时出错。错误1362:不允许在after中更新新行trigger@lucyF你能把它也添加到问题中吗?应该是before trigger你得到了什么错误?浏览这些链接:我得到了这个错误:操作失败:将SQL脚本应用到数据库时出错。错误1362:不允许在after中更新新行trigger@lucyF你能把它也加入到问题中吗?应该是在触发之前谢谢@Gordon Linoff。我使用了before update触发器,遇到了一个新的错误操作失败:将SQL脚本应用于数据库时出错。错误1054:在'NEW'@lucyF中出现未知列'occurrence'。这就是您在原始代码中编写的内容。可能是样本数据中出现的
事件
。谢谢@Gordon Linoff。我使用了before update触发器,遇到了一个新的错误操作失败:将SQL脚本应用于数据库时出错。错误1054:在'NEW'@lucyF中出现未知列'occurrence'。这就是您在原始代码中编写的内容。可能是样本数据中的
事件