为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-社区
顺便说一句:像这样创建一个空的触发器效果很好:
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,所以如果能在这里发布一些有用的东西,我会非常兴奋:-)
发布于 2009-01-22 16:38:28
您需要change the delimiter - 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 ;
https://stackoverflow.com/questions/469784
复制相似问题