Триггер SQL с операторами WHEN и UPDATE - PullRequest
0 голосов
/ 09 марта 2019

Я пишу следующий код, который должен увеличиваться на 1 «likecount» из таблицы «song» после вставки в таблицу «ecoute».Перед этим триггер проверяет, является ли логическое значение «likked» из новой вставки «true».Если так, то ОБНОВЛЕНИЕ продолжается.Иначе ничего не происходит.

CREATE TRIGGER likked AFTER INSERT ON ecoute
FOR EACH ROW
WHEN (NEW.likked)
BEGIN
    UPDATE songs
    SET songs.likecount = songs.likecount +1
    WHERE songs.id = NEW.songid
END

MySQL ответил:

#1064 - Syntax error near 'WHEN (NEW.likked)
BEGIN
    UPDATE songs
    SET songs.likecount = songs.like' at line 3

Примечания : До сих пор я пытался создать разные JOIN, потому что я думал, что проблема былаЯ призываю к новой таблице при обновлении таблицы SONGS, но ответ от MySQL остается прежним.

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Используйте тест IF THEN, чтобы проверить значение likked

DELIMITER $$
CREATE TRIGGER likked AFTER INSERT ON ecoute
FOR EACH ROW
BEGIN
    IF NEW.likked=1 THEN 
        BEGIN
            UPDATE songs
            SET songs.likecount = songs.likecount +1
            WHERE songs.id = NEW.songid;
        END; 
    END IF; 
END$$
DELIMITER ;
0 голосов
/ 09 марта 2019

Это то, что вы хотите?

DELIMITER $$
CREATE TRIGGER likked AFTER INSERT ON ecoute
FOR EACH ROW
BEGIN
    IF NEW.likked = 1 THEN
        UPDATE songs
            SET songs.likecount = songs.likecount +1
            WHERE songs.id = NEW.songid
    END IF;
END;

DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...