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 ;
我尝试为每个新的 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 ;