当前位置:  开发笔记 > 后端 > 正文

在MySQL数据库中为表创建触发器(语法错误)

如何解决《在MySQL数据库中为表创建触发器(语法错误)》经验,为你挑选了1个好方法。

我无法定义MySQL数据库的触发器.我想在插入新行之前更改文本字段(在给定条件下).这是我尝试过的:

CREATE TRIGGER add_bcc
BEFORE INSERT ON MailQueue
FOR EACH ROW BEGIN
  IF (NEW.sHeaders LIKE "%support@mydomain.com%") THEN
    SET NEW.sHeaders = NEW.sHeaders + "BCC:internal@mydomain.com";
  END IF;
END; 

但总是我得到错误"错误的语法".我卡住了,我做错了什么?我正在使用MySQL 5.0.51a-community

顺便说一句:创建一个像这样的空触发器工作正常:

CREATE TRIGGER add_bcc
BEFORE INSERT ON MailQueue
FOR EACH ROW BEGIN
END; 

但这也失败了:

CREATE TRIGGER add_bcc
BEFORE INSERT ON MailQueue 
FOR EACH ROW BEGIN
  IF 1=1 THEN
  END IF; 
END;

这是我第一次使用stackoverflow.com,所以如果在这里发布内容有帮助我会非常兴奋:-)



1> Greg..:

你需要更改分隔符 - MySQL正在看第一个";" 作为CREATE TRIGGER语句的结尾.

试试这个:

/* Change the delimiter so we can use ";" within the CREATE TRIGGER */
DELIMITER $$

CREATE TRIGGER add_bcc
BEFORE INSERT ON MailQueue
FOR EACH ROW BEGIN
  IF (NEW.sHeaders LIKE "%support@mydomain.com%") THEN
    SET NEW.sHeaders = NEW.sHeaders + "BCC:internal@mydomain.com";
  END IF;
END$$
/* This is now "END$$" not "END;" */

/* Reset the delimiter back to ";" */
DELIMITER ;

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有