mysql中的触发器收到错误

时间:2017-12-19 16:46:12

标签: mysql sql triggers

我正在尝试创建一个更新某个值的触发器,如果​​该行不存在,则插入一个值为1的新行。

我用3种可能的方式编写了触发器,所有这些都是错误的

版本1:

CREATE TRIGGER stat_trg BEFORE INSERT ON comments
  FOR EACH ROW
  BEGIN
    INSERT INTO statistics 
      SET item_id = NEW.item_id,
          likes = 0,
          comment = 1
    ON DUPLICATE KEY UPDATE  
      SET comment = OLD.comment + 1;
  END; 
  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法   在第9行'SET comment = OLD.comment + 1'附近

版本2:

CREATE TRIGGER stat_trg AFTER INSERT ON comments
FOR EACH ROW
BEGIN
    DECLARE num integer DEFAULT 0;
    SELECT comment into num FROM statistics
      WHERE item_id = OLD.item_id;
    SET num := num + 1; 

    INSERT INTO statistics (item_id, comment, likes) VALUES (num,1,0)
END;
  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近''第4行

版本3:

CREATE TRIGGER stat_trg BEFORE INSERT ON comments
  FOR EACH ROW
  BEGIN
    INSERT INTO statistics (item_id, likes, COMMENT) VALUES (NEW.item_id,0,1)
    ON DUPLICATE KEY UPDATE  
      comment = comment + 1;
  END; 
  

1064 - 您的SQL语法出错;检查对应的手册>到你的MySQL服务器版本,以便在第6行的''附近使用正确的语法

根据我发现的例子,一切看起来都很好,我错过了什么? 请帮忙解决这个问题。 感谢。

1 个答案:

答案 0 :(得分:0)

请试试这个:

mkdir -m 755 -p /path/outside/webroot
mv create_db.txt /path/outside/webroot
chown -R <user>:<group> /path/outside/webroot