代码之家  ›  专栏  ›  技术社区  ›  Georg Ledermann

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

  •  17
  • Georg Ledermann  · 技术社区  · 17 年前

    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;
    

    1 回复  |  直到 13 年前
        1
  •  28
  •   Greg    17 年前

    你需要 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 ;