如何根据条件在 MySQL 和 运行 中创建触发器
How do I create a trigger in MySQL and run on conditons
我有两个 table,如下所述,我想创建一个触发器来更新我的 monitor
table,并在相关帖子 post_status = 'draft'
.但是我有两个问题:
我创建了一个查询(也在下方),但我似乎 returns 第 5 行(更新命令所在的位置)出现错误。
第二个问题是MySQL在我的monitor
table.
中找不到对应的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;
不清楚您 UPDATE.id
指的是什么,但我猜您指的是 NEW.id
,这是生成此触发器的行的 ID 列。
生成当前触发器的行的所有列均使用 NEW.<column>
语法引用。
如果您的 UPDATE 不匹配 monitor
table 中的任何行,它没有任何效果。就像您 运行 一个条件匹配零行的 UPDATE 一样。
我有两个 table,如下所述,我想创建一个触发器来更新我的 monitor
table,并在相关帖子 post_status = 'draft'
.但是我有两个问题:
我创建了一个查询(也在下方),但我似乎 returns 第 5 行(更新命令所在的位置)出现错误。
第二个问题是MySQL在我的monitor
table.
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;
不清楚您 UPDATE.id
指的是什么,但我猜您指的是 NEW.id
,这是生成此触发器的行的 ID 列。
生成当前触发器的行的所有列均使用 NEW.<column>
语法引用。
如果您的 UPDATE 不匹配 monitor
table 中的任何行,它没有任何效果。就像您 运行 一个条件匹配零行的 UPDATE 一样。