我无法定义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
BTW:像这样创建一个空的Trigger工作正常:
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,所以如果在这里发布内容有帮助,我会非常兴奋: - )
答案 0 :(得分: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 ;