Я пытаюсь настроить триггер MySQL, но я не могу понять, как именно получить то, что я хочу сделать. Я думаю, что мне нужно настроить MySQL @variable, но то, что я пробовал, не сработало, и я не смог найти хороший ресурс, чтобы понять это. Я изменяю разделитель в phpMyAdmin, и комментарий ниже не используется в реальном запросе.
CREATE TRIGGER coroner AFTER INSERT ON events
FOR EACH ROW BEGIN
UPDATE teams SET live = live-1 WHERE id = NEW.victim;
UPDATE teams SET score = score+NEW.value WHERE id = NEW.shooter;
UPDATE teams SET last_active = NEW.time WHERE id = NEW.shooter OR id = NEW.victim;
// up to here all works fine
IF (SELECT live FROM teams WHERE id = NEW.victim) = 0 THEN
UPDATE teams SET slot = slot-1 WHERE slot > OLD.slot;
ENDIF;
END
Что я на самом деле здесь делаю, так это беру команду, расположенную по кругу, и когда последний игрок команды выбывает, я закрываю круг без него.
Вот сообщение об ошибке от phpMyAdmin:
# 1363 - В триггере INSERT отсутствует старая строка
спасибо за любую помощь
новая попытка:
CREATE TRIGGER coroner AFTER INSERT ON events
FOR EACH ROW BEGIN
UPDATE teams SET live = live-1 WHERE id = NEW.victim;
UPDATE teams SET score = score+NEW.value WHERE id = NEW.shooter;
UPDATE teams SET last_active = NEW.time WHERE id = NEW.shooter OR id = NEW.victim;
SET @pivot := (SELECT slot FROM teams WHERE id = NEW.victim);
IF (SELECT live FROM teams WHERE id = NEW.victim) = 0 THEN
UPDATE teams SET slot = slot+1 WHERE slot < @pivot;
ENDIF;
END
ошибка:
# 1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, которое
соответствует вашему серверу MySQL
версия для правильного использования синтаксиса
возле '; END 'в строке 9