如何在MySQL中创建触发器并在条件上运行

时间:2017-11-06 16:05:45

标签: mysql sql database-trigger

我有两个表,如下所述,我想创建一个触发器来更新我的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;

SQL Fiddle

1 个答案:

答案 0 :(得分:0)

目前还不清楚你想要UPDATE.id引用什么,但我想你的意思是NEW.id,这是产生这个触发器的行的id列。

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

如果您的UPDATE不匹配monitor表中的任何行,则它无效。就像你运行了一个条件匹配零行的UPDATE。