缺少结肠' MySQL触发器声明中的错误

时间:2017-03-08 18:33:40

标签: mysql ubuntu triggers mysql-workbench

各位大家好,首先感谢您的耐心和帮助!

我在MySQL中创建触发器时遇到困难(我在Ubuntu 16.10上使用了MySQL WorkBench 6.3)。

以下是代码:

CREATE TRIGGER check_device 
BEFORE INSERT ON dummyPT_data.devices
FOR EACH ROW
BEGIN
    IF (NEW.dtype != "HOST" && NEW.ipaddr != NULL || NEW.netmask != NULL || NEW.dfgateway != NULL)
    THEN raise_application_error(-20001,'The device type is uncompatible with data inserted');
    END IF;
END;

代码编辑器强调功能raise_application_error并说:Syntax error: missing 'colon'

我无法在文本中找到任何错误。我希望你能帮助我。

2 个答案:

答案 0 :(得分:1)

突然出现的语法错误

!= NULL 

应该是

IS NOT NULL

除此之外,用DELIMITER

包裹你的触发器

答案 1 :(得分:0)

分隔符可能有问题,你改了吗?

看这个

Unable to Run Query in MySQL syntax error unexpected

如果更改分隔符,则必须将新分隔符放在最后一个END

DELIMITER $$
CREATE TRIGGER check_device 
BEFORE INSERT ON dummyPT_data.devices
FOR EACH ROW
BEGIN
 IF (NEW.dtype != "HOST" && NEW.ipaddr != NULL || NEW.netmask != NULL || NEW.dfgateway != NULL)
 THEN raise_application_error(-20001,'The device type is uncompatible with data inserted');
END IF;
END$$
DELIMITER ;