我正在尝试创建一个触发器,如果表 wp_bp_xprofile_data
中的条目带有 field_id
106
已修改。该条目只能针对同一用户进行更新。
这是我的代码:
CREATE TRIGGER trigger_api_key_update AFTER UPDATE ON wp_bp_xprofile_data
FOR EACH ROW
IF new.field_id = 106 THEN
UPDATE wp_users SET api_key_modified = 1 WHERE id = new.user_id;
END IF;
结果我得到:
1064 - You have an error in your SQL syntax; check the manual that corresponds > to your MySQL server version for the right syntax to use near '' at line 4
如果我删除 IF 语句,代码确实可以工作 - 但随后它将更新所有修改的数据,而不仅仅是 field_id
106 的数据。
最佳答案
您需要更改分隔符。否则定义在第一个 ;
处结束,这将使其不完整
delimiter |
CREATE TRIGGER trigger_api_key_update AFTER UPDATE ON wp_bp_xprofile_data
FOR EACH ROW BEGIN
IF new.field_id = 106 THEN
UPDATE wp_users SET api_key_modified = 1 WHERE id = new.user_id;
END IF;
END
|
delimiter ;
如果没有 if
,代码也能正常工作,因为它是一条语句,末尾只有一个 ;
。
关于MySQL 触发器与 IF 语句返回 #1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37273542/