【问题标题】:Mysql create trigger throws errorMysql创建触发器抛出错误
【发布时间】:2015-08-30 13:40:33
【问题描述】:
我尝试为每个新帖子创建触发器
这是我的代码
CREATE TRIGGER insertprod AFTER INSERT ON post
FOR EACH ROW
BEGIN
INSERT INTO attributes SET attrtext = 'sometext', post_id = NEW.id;
END;
我收到了这个错误
【问题讨论】:
标签:
mysql
database
triggers
insert
【解决方案1】:
你可能只需要一个分隔符:
DELIMITER $$
CREATE TRIGGER insertprod AFTER INSERT ON post
FOR EACH ROW
BEGIN
INSERT INTO attributes SET attrtext = 'sometext', post_id = NEW.id;
END;
$$
DELIMITER ;
但是,您还使用了INSERT 的非标准形式。我建议:
DELIMITER $$
CREATE TRIGGER insertprod AFTER INSERT ON post
FOR EACH ROW
BEGIN
INSERT INTO attributes(attrtext, post_id)
VALUES('sometext', NEW.id);
END;
$$
DELIMITER ;
【解决方案2】:
解析器被; 混淆了,它终止了触发器的BEGIN...END 块内的语句。您需要使用DELIMITER 语句来定义一个新的分隔符,然后您可以使用它来结束CREATE TRIGGER 语句。
【解决方案3】:
您的 INSERT 命令是错误的。应该是的
INSERT INTO attributes (attrtext, post_id) VALUES ('sometext', NEW.id);