Все вызываемые таблицы точно существуют. Я дважды проверил орфографию. Ошибки, которые дает sqldeveloper, не очень полезны, и я не могу понять, почему это не удается. Я пытаюсь создать триггер, который обновляет таблицу top5restaurants при поступлении нового отзыва. У меня есть процедура, которая анализирует обзор и добавляет его в таблицу рейтинга. Стол top5restaurant поддерживает рестораны с 5 самыми высокими оценками.
drop view bestratings_rest;
create view bestratings_rest(rid, rate) as
(select distinct rid, max(stars) from rating
group by rid);
drop table top5restaurants;
create table top5restaurants(rid int);
insert into top5restaurants rid
select rid from
(select rid, rate from bestratings_rest r
order by r.rate asc)
where rownum <=5;
drop view top5rest;
create view top5rest as
select rid, best from(
select t.rid, best from top5restaurants t
inner join (select distinct rid, max(stars) as best from rating
group by rid) b
on t.rid = b.rid);
create or replace trigger top5_trigger
after insert on rating
for each row
declare
minrow top5rest%rowtype;
restrid restaurant.rid%type;
restname restaurant.name%type;
begin
insert into minrow
select rid, min(best) from top5rest;
insert into restname
select rid from restaurant
where :new.rid = restaurant.rid;
if :new.stars > minrow.best then
DELETE FROM top5restaurants
where top5restaurants.rid = :new.rid;
insert into top5restaurants values(rid);
end if;
end;
/
--
--
begin
update_reviews('Jade Court','Sarah M.', 4, '08/17/2017');
update_reviews('Shanghai Terrace','Cameron J.', 5, '08/17/2017');
update_reviews('Rangoli','Vivek T.',5,'09/17/2017');
update_reviews('Shanghai Inn','Audrey M.',2,'07/08/2017');
update_reviews('Cumin','Cameron J.', 2, '09/17/2017');
end;
/
select * from top5restaurants;
Выходные данные sqldeveloper:
Просмотр BESTRATINGS_REST удален.
Просмотр BESTRATINGS_REST создан.
Таблица TOP5RESTAURANTS удалена.
Таблица TOP5RESTAURANTS создано.
вставлено 5 строк.
Просмотр TOP5REST удален.
Просмотр создан TOP5REST.
Триггер скомпилирован TOP5_TRIGGER
LINE / COL ОШИБКА
7/5 PL / SQL: SQL Оператор игнорируется 7/17 PL / SQL: ORA-00942: таблица или представление не существует 11/5 PL / SQL: SQL Оператор игнорируется 11/17 PL / SQL: ORA-00942: таблица или представление не существует 18/5 PL / SQL: SQL Оператор игнорируется 18/40 PL / SQL: ORA -00984: столбец здесь запрещен. Ошибки: проверьте журнал компилятора