Ошибка триггера конца файла - PullRequest
0 голосов
/ 30 мая 2018

У меня есть этот код:

CREATE OR REPLACE TRIGGER avg_elo_trigger
     AFTER
       INSERT OR DELETE 
     ON participants_list
BEGIN
     UPDATE eventss e2
     SET average_elo = (SELECT Round(Avg(p.elo)) FROM participants_list pl 
                                                 join eventss e on e.event_id = pl.event_id 
                                                 join players p on p.player_id = pl.player_id 
                                                 WHERE e.event_id = :P20_EVENT_ID)
     WHERE e2.event_id = :P20_EVENT_ID
END;
/

Я получаю сообщение об ошибке конца файла в строке 9, и я не знаю, в чем проблема.Код между BEGIN и END работает вне триггера.

1 Ответ

0 голосов
/ 30 мая 2018

У вас пропущена точка с запятой.

Но вы также можете упростить запрос:

CREATE OR REPLACE TRIGGER avg_elo_trigger
     AFTER INSERT OR DELETE 
     ON participants_list
BEGIN
    UPDATE eventss e
        SET average_elo = (SELECT Round(Avg(p.elo))
                           FROM participants_list pl join
                                players p
                                on p.player_id = pl.player_id 
                           WHERE pl.event_id = e.event_id
                         )
        WHERE e2.event_id = :new.P20_EVENT_ID;
END;

Примечания:

  • Таблица events не являетсянеобходимо в подзапросе.
  • Корреляция может быть к participants_list.
  • Корреляция может быть к внешней таблице, а не повторять константу.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...