【问题标题】:Missing 'colon' error in MySQL Trigger declarationMySQL 触发器声明中缺少“冒号”错误
【发布时间】:2017-07-29 11:41:41
【问题描述】:

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

我在 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'

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

【问题讨论】:

  • 好的,我已经编辑了代码。现在看起来像这样:DELIMITER $$ CREATE TRIGGER check_device BEFORE INSERT ON dummyPT_data.devices FOR EACH ROW BEGIN IF (NEW.dtype != "HOST" && NEW.ipaddr IS NOT NULL || NEW.netmask IS NOT NULL || NEW.dfgateway IS NOT NULL) THEN raise_application_error(-20001,'The device type is uncompatible with data inserted'); END IF; END$$ DELIMITER; 我得到同样的错误加上结束 DELIMITER 关键字的错误,它说 Syntax error: DELIMITER (identifier) is not valid input in this position

标签: mysql ubuntu triggers mysql-workbench


【解决方案1】:

跳到我的明显语法错误

!= NULL 

应该是

IS NOT NULL

除了这个之外,用 DELIMITER 包裹你的触发器

【讨论】:

    【解决方案2】:

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

    看看这个

    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 ;
    

    【讨论】:

      猜你喜欢
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 2022-07-26
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      相关资源
      最近更新 更多