Синтаксическая ошибка на CREATE TRIGGER в phpmyadmin - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь создать триггер, который обновит столбец в таблице подкастов до среднего значения, полученного из spro c, вызванного во время триггера. Я работал над этим триггером, но, похоже, продолжаю нажимать на ту же ошибку, где мой синтаксис неправильный, я думал, что нашел решение путем изменения разделителя, однако эта проблема возникает даже после этого.

Триггер, который я пытаюсь создать, выглядит следующим образом:


DELIMITER // 

CREATE TRIGGER test 
    AFTER INSERT ON podcastranking
    FOR EACH ROW 

    BEGIN

        DECLARE temp_pod_id int; 
        DECLARE updated_rating int; 

        set temp_pod_id = SELECT podcast_id FROM inserted;
        set updated_rating = CALL get_podcast_rating_avg(temp_pod_id);

        UPDATE podcasts
            SET podcasts.ranking = updated_rating
            WHERE podcasts.id = temp_pod_id;

   END; //

DELIMITER ;

Когда я пытаюсь запустить это, я получаю сообщение об ошибке:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT podcast_id FROM inserted;
        SET updated_rating = CALL get_podcast_' at line 10

Извинения если я совершаю ошибку, не зная об этом, я довольно плохо знаком с MySQL, и попадание в нее становится для меня чем-то вроде кривой обучения.

Спасибо! :)


из ответов П.Салмона, которые я переписал как

DELIMITER // 

    CREATE TRIGGER test 
        AFTER INSERT ON podcastranking
        FOR EACH ROW 

        BEGIN
            UPDATE podcasts
                SET podcasts.ranking = CALL get_podcast_rating_avg(SELECT podcast_id FROM new.values);
                WHERE podcasts.id = SELECT podcast_id FROM new.values ;
        END; //

DELIMITER ;

Однако у меня все еще есть проблема с сообщением о том, что мой синтаксис неправильный.

...