2017-11-15 7 views
0

フィールド 'type'、 'receiver_id'、 'confirm'、 'id'を持つテーブル 'comments'があります。 それぞれにコメントセクションを持つ3種類のオブジェクトがあります。コメント後にトリガーがそれぞれのテーブル内のオブジェクトの数を増やすことを確認してください。 IFとIF ELSE条件のあるMysqlトリガー

DB::unprepared('CREATE TRIGGER comment_confirm 
     AFTER UPDATE ON comments FOR EACH ROW 
     BEGIN 
      IF OLD.confirm = 0 AND NEW.confirm = 1 THEN 
       IF OLD.type = profile THEN 
        UPDATE profiles SET comments = comments + 1 WHERE user_id = OLD.reciever_id; 
       ELSE IF OLD.type = blog THEN 
        UPDATE blogs SET comments = comments + 1 WHERE user_id = OLD.reciever_id; 
       ELSE IF OLD.type = topic THEN 
        UPDATE topics SET comments = comments + 1 WHERE user_id = OLD.reciever_id; 
       END IF; 
      END IF; 
     END 
     '); 

移行のエラーは次のとおりです。OLD.type =プロファイルは右の文字列の比較のために単一引用符にする必要があります見ていない場合は

エルス
[PDOException] 
    SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax 
    to use near '' at line 13 

答えて

1

場合は(スペースなし)elseifをしなければなりません。