如何根据条件在 MySQL 和 运行 中创建触发器

How do I create a trigger in MySQL and run on conditons

我有两个 table,如下所述,我想创建一个触发器来更新我的 monitor table,并在相关帖子 post_status = 'draft'.但是我有两个问题:

我创建了一个查询(也在下方),但我似乎 returns 第 5 行(更新命令所在的位置)出现错误。

第二个问题是MySQL在我的monitortable.

中找不到对应的post_id如何处理

Table(s):

posts
- id
- name
- post_status

monitor
- id
- post_id
- last_checked

MySQL 触发器

CREATE TRIGGER update_tracker AFTER UPDATE ON posts
FOR EACH ROW
BEGIN
IF NEW.post_status = 'draft' THEN
    UPDATE monitor SET last_checked = NOW() WHERE post_id = UPDATE.id;
END IF;
END;

SQL Fiddle

不清楚您 UPDATE.id 指的是什么,但我猜您指的是 NEW.id,这是生成此触发器的行的 ID 列。

生成当前触发器的行的所有列均使用 NEW.<column> 语法引用。

如果您的 UPDATE 不匹配 monitor table 中的任何行,它没有任何效果。就像您 运行 一个条件匹配零行的 UPDATE 一样。