首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL触发器声明中缺少‘冒号’错误

问MySQL触发器声明中缺少‘冒号’错误
EN

Stack Overflow用户
提问于 2017-03-09 02:33:40
回答 2查看 810关注 0票数 1

大家好,首先感谢你们的耐心和帮助!

我只是在MySQL中创建触发器时卡住了(我在Ubuntu16.10上使用的是MySQL WorkBench 6.3 )。

代码如下:

代码语言:javascript
复制
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'

我找不到正文中的任何错误。我希望你能帮助我。

EN

回答 2

Stack Overflow用户

发布于 2017-03-09 02:50:51

我突然想到一个明显的语法错误

代码语言:javascript
复制
!= NULL 

应该是

代码语言:javascript
复制
IS NOT NULL

除了这个,用分隔符包装你的触发器

票数 1
EN

Stack Overflow用户

发布于 2017-03-09 02:38:56

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

看这个

Unable to Run Query in MySQL syntax error unexpected

如果您更改了分隔符,则必须将新的分隔符放在最后

代码语言:javascript
复制
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 ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42679234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档