我有两个如下所述的表,我想创建一个触发器来更新我的 monitor
表,当相关帖子的 post_status = 'draft'
.但是我有两个问题:
我创建了一个查询(也在下方),但我似乎在第 5 行(更新命令所在的位置)返回错误。
第二个问题是如果在我的monitor
表中找不到对应的post_id
,MySQL将如何处理。
表格:
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;
最佳答案
不清楚你的意图UPDATE.id
引用,但我猜你的意思是NEW.id
,这是生成此触发器的行的 id 列。
生成当前触发器的行的所有列都用 NEW.<column>
引用语法。
如果您的 UPDATE 不匹配 monitor
中的任何行表,它没有影响。就像您运行了条件匹配零行的 UPDATE 一样。
关于mysql - 如何在 MySQL 中创建触发器并在条件下运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47141086/