我在为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,因此如果在此处发布内容有帮助,我会感到非常兴奋。
您需要更改定界符-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 ;