Я знаю, что представление гораздо лучше подходит для этой цели, но по какой-то причине безумные люди хотят, чтобы я использовал триггер.
В основном мне нужно вести таблицу из 5 лучших рейтингов, которая обновляется каждый раз. ресторан получает новый рейтинг. Я не знаю, как это сделать, поскольку мне кажется, что мне действительно нужно читать из таблицы, на которой у меня есть триггер, но Oracle не позволит мне.
drop view bestratings_rest;
create view bestratings_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 rating
for each row
begin
delete from top5restaurants;
insert into top5restaurants
select rid from top_rest
where rownum <=5
order by rat asc;
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;