2017-12-19 2 views
1

を取得MySQLでのトリガーあなたのSQL構文でエラーが発生しているは、私が3でトリガを書い1.</p> <p>=私はいくつかの値を更新するトリガーを作成しようとしている、との行が値を持つ新しい行を挿入よりも、存在していない場合、エラー

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; 

;:可能な方法とそれらのすべてが

バージョン1エラー

を取得していますライン9

バージョン2に近い を使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認し 'SETコメント= OLD.comment + 1':

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サーバのバージョンを確認してください。右側の構文は行末にあります。

私が見つけた例によれば、すべてがうまく見えますが、何が欠けていますか? この問題についてお手伝いください。おかげさまで

+0

は(https://dev.mysql.com/doc/refman/5.7/en/insert-on- [DUPLICATE KEY UPDATE構文INSERT ... ON]をご確認くださいduplicate.html)。任意のプロシージャ・コードをSQL文の中に注入しようとしています。 –

+0

も同様にエラーが発生しました。 – Marat

+0

あなたは '統計'のテーブルデザインを共有できますか? – Ravi

答えて

0

これを試してください:

DELIMITER $$ 
CREATE TRIGGER `stat_trg` BEFORE INSERT ON `comments` 
    FOR EACH ROW BEGIN 
    INSERT INTO `statistics` set item_id= NEW.item_id, likes = '0', comments = '1' ON DUPLICATE KEY UPDATE 
     comments = values(comments) + 1; 
    END$$ 
    DELIMITER ; 
関連する問題