Я пытаюсь использовать триггер для заполнения значений другой таблицы. Триггер отслеживает вставку в таблицу рейтингов и обновляет значения другой таблицы, top5restaurants
. Я не понял, как сохранить только top 5
в top5restaurants
, я не знаю, как ограничить таблицу определенным количеством записей. Но сейчас я не могу ничего сделать с top5restaurants
внутри триггера.
drop view top_rest;
create view top_rest (rid, rat)
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 top_rest
where rownum <= 5
order by rat asc;
create or replace trigger top5_trigger
after insert on ratings
for each row
declare top5 top5restaurants%rowtype;
cursor top5_cursor is
select rid from top_rest
where rownum <=5
order by rat;
begin
for record in top5_cursor
loop
fetch top5_cursor into top5;
insert into top5restaurants values(top5);
end loop;
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.',3,'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;
insert into top5restaurants values(184);
Однако таблица существует, и я могу выполнять запросы к ней, и она возвращает данные, которые я вставил при создании таблицы. Я также могу вставить значения. Не уверен, почему я получаю таблицу не найдена ошибка при использовании триггера.