Mysql 创建触发器抛出错误

Mysql create trigger throws error

我尝试为每个新的 post 创建触发器 这是我的代码

CREATE TRIGGER insertprod AFTER INSERT ON post
FOR EACH ROW
BEGIN
  INSERT INTO attributes SET attrtext = 'sometext', post_id = NEW.id;
END;

我遇到了这个错误

您的 INSERT 命令有误。应该是

 INSERT INTO attributes (attrtext, post_id) VALUES ('sometext', NEW.id);

解析器被终止触发器 BEGIN...END 块内的语句的 ; 搞糊涂了。您需要使用 DELIMITER 语句来定义一个新的分隔符,然后您可以使用它来结束 CREATE TRIGGER 语句。

您可能只需要一个分隔符:

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 ;