MySQL触发结果-1064

问题描述

我需要在sql中创建一个触发器来执行以下操作: wordpress表“选项”在ID 1和ID 2中具有网站的option_value URL。

如果该URL在该特定位置(id 1和id2)被更改,则触发器应运行以设置回old.option_value

CREATE TRIGGER tr_up_otpions_value
BEFORE UPDATE ON option_value FOR EACH ROW
BEGIN
IF (:old.option_value = 'https://example.com') then
:new.option_value := 'https://example.com';
end if;
end;

但是出现以下错误

#1064 - Error ':old.option_value = 'https://example.com') then
    :new.option_value := 'h...' Row 4

解决方法

您需要从新旧值中删除:符号

还需要添加set关键字。

在那之后,如果您有一个看起来像这样的表:

create table Zr_options (option_value varchar(500))

然后此“更新前触发器”将起作用:

CREATE TRIGGER tr_up_otpions_value
BEFORE UPDATE 
ON Zr_options FOR EACH ROW
BEGIN
    IF old.option_value = 'https://example.com' then
        set new.option_value = 'https://example.com';
    end if;
end;

这是一个演示:

DEMO