mysql - SQL触发器更新同一个表

标签 mysql sql database-trigger

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

最佳答案

您想要一个before更新触发器:

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/

相关文章:

java - 在不知道日期的情况下设置时间

android - 使用 mySQL 运行 monkeyrunner python 脚本

php - 将用户添加到 phplist 数据库

mysql - 如何在触发器内连接两个服务器中的两个mysql数据库

具有稳定自动增量的 MySQL 原子插入(如果不存在)

c# - 如何使用C#将图像保存到数据库中

SQLite,根据日期进行查询

java - 如何知道 Hibernate 中原生 SQL 查询结果的类型?

mysql - 创建 SQL 触发器以更新行值

mysql - WordPress 和 mysql : Issue with trigger