gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:57:31 25 4
gpt4 key购买 nike

我无法为 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,所以如果在这里发帖对我有帮助,我会非常兴奋:-)

最佳答案

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

关于mysql - 为 MySQL 数据库中的表创建触发器(语法错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/469784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com