#mysql
#mysql
Вопрос:
Кажется, не удается заставить этот триггер работать… Некоторая помощь была бы признательна.
DROP TRIGGER IF EXISTS trigger_votes;
CREATE TRIGGER trigger_votes AFTER INSERT ON votes
UPDATE collections
SET IF(vote = 1, loves, hates) = IF(vote = 1, loves, hates) 1
WHERE collections.id = NEW.collection_id;
Когда в таблице голосов записывается новое «голосование», я хочу увеличить столбец «любит» Или «ненавидит» в коллекциях таблиц, в которых содержится количество. В таблице голосов есть столбец с именем collection_id, который соответствует записи в таблице коллекций.
Ответ №1:
DELIMITER $$
CREATE TRIGGER trigger_votes AFTER INSERT ON votes FOR EACH ROW
BEGIN
UPDATE collections
SET loves = CASE NEW.vote WHEN 1 THEN loves 1 ELSE loves END
,hates = CASE NEW.vote WHEN 1 THEN hates ELSE hates 1 END
WHERE collections.id = NEW.collection_id;
END $$
DELIMITER ;
Комментарии:
1. # 1064 — У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘UPDATE collections SET loves = CASE NEW.голосуйте, КОГДА 1 ЗАТЕМ любит 1 ЕЩЕ любит EN’ в строке 2.
2. Я даже не могу получить базовый триггер CREATE TRIGGER triggervotes ПОСЛЕ ВСТАВКИ В votes UPDATE collections SET loves = loves 1, ГДЕ id = NEW.collection_id; Для работы
3. Хорошо, все, что я сделал, это добавил разделитель $$ в начало и завернул инструкцию UPDATE ДЛЯ КАЖДОЙ СТРОКИ BEGIN и END; и это сработало.