带有IF语句的MySQL触发器返回#1064

时间:2016-05-17 10:28:48

标签: mysql if-statement triggers sql-update

我正在尝试创建一个触发器,如果​​表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的修改数据。

1 个答案:

答案 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代码可以正常工作,因为它只是一个语句,最后只有一个;