首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >正在为MySQL数据库中的表创建触发器(语法错误)

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

Stack Overflow用户
提问于 2009-01-22 16:14:57
回答 1查看 21.4K关注 0票数 17

为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,所以如果能在这里发布一些有用的东西,我会非常兴奋:-)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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 ;
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/469784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档