我正在尝试创建一个触发器,如果表api_key_modified
中的条目wp_users
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 - 您的SQL语法出错;检查对应的手册>到您的MySQL服务器版本,使用正确的语法来使用附近的''在第4行
如果删除IF语句,代码确实有效 - 但是它会更新所有修改的数据,而不仅仅是field_id
106的修改数据。
答案 0 :(得分:1)
您需要更改分隔符。否则,定义将在第一个;
处结束,这将使其不完整
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
代码可以正常工作,因为它只是一个语句,最后只有一个;
。