我有两个表,如下所述,我想创建一个触发器来更新我的monitor
表格,其中包含相关帖子的时间戳。 post_status = 'draft'
。但是我有两个问题:
我创建了一个查询(也在下面),但我似乎在第5行(更新命令所在的位置)返回错误。
第二个问题是如果MySQL在我的post_id
表中找不到相应的monitor
,它将如何处理。
表(一个或多个):
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;
答案 0 :(得分:0)
目前还不清楚你想要UPDATE.id
引用什么,但我想你的意思是NEW.id
,这是产生这个触发器的行的id列。
产生当前触发器的行的所有列都使用NEW.<column>
语法引用。
如果您的UPDATE不匹配monitor
表中的任何行,则它无效。就像你运行了一个条件匹配零行的UPDATE。