14) Отслеживается удаление строк из таблицы изделий. Удаление изделия каскадируется в таблицу spj, в которой удаляются связанные с этим изделием поставки. Для тех поставщиков, для которых в результате удаления поставок суммарный объем поставок уменьшается более, чем на 50%, рейтинг поставщика в таблице s уменьшается на 25%.
15) №27. Select distinct n_post from spj as tmp where
(select distinct count(*) from spj where n_post=tmp.n_post and
n_det=tmp.n_det)=(select count(*) from j)
16) №17. Отслеживается модификация поля «количество» в spj. Если в результате выполнения операции модификации суммарный объем изменений полей «количество» некоторого поставщика по величине превосходит 50% объема поставок деталей, ранее выполненных этим же поставщиком, рейтинг увеличить на 25%. Задачу выполнить с использованием триггеров и процедур.
Create trigger vova update of n_izd on j referencing old as original new as newv
For each row execute procedure kolotolin(newv.n_izd,original.n_izd)
Create procedure kolotilin(newv.n_izd char(5), newv.name,n_izd char(5)) returning
If((select count(n_izd) from j where n_izd=newv.n_izd)=1) then
Update spj set n_izd=newv.n_izd Where n_izd=original.n_izd
Else Update j set n_izd=original.n_izd where n_izd=newv.n_izd End if
End procedure
17) №34. Select * from p where n_det in
(select distinct n_det from spj where n_izd in
(select n_izd from j where town=’Лондон’))
group by n_post,n_det having count(n_izd)=
(select count(*) from j where town=’Лондон’))
информация о деталях, которые поставляются для всех изделий из лондона одним и тем же поставщиком.
Триггер: триггер срабатывает при модифицации n_izd в таблице j. Проверяются изменения № изделия. Номер, на который заменить старый, должен быть уникален. Если это так, то spj модифицируется каскадно, иначе модификация отменяется.
18) create trigger modif_s update on n_post on s old as old_npost
referencing new as new_npost
for each row(execute u(new_npost,old_npost)
create procedure u(npost char(5), spost char(5))
define c int;
let c=*select count(n_post) from S where n_post = npost)
if(c=1) then update spj set n_post=npost where n_post=spost
else update s set n_post=npost where n_post=npost
19) №12. Select n_izd from j jx where not exists
(select * from spj, spjy where spjy.n_izd=jx.n_izd)
and spjy.n_post!=”S2”)
выбрать номера изделий, чтобы в spj не содержалось таких строк, соответствующих этому изделию, что поставщик не равен S2.
Выбрать номера изделий для которых все детали поставляет только поставщик s2.
20) №13. Отслеживать выполнение операции модификации в j. Новое значение добавляется из списка городов таблиц s,p,j, иначе модификация отвергается. Выполнить задачу с использованием триггеров и процедур.
Create trigger test update of town on j
referencing old as town1 new as town2
For each row when(town2.town not in (select distinct town from s) and town2.town not in (select distinct town from p) and town2.town not in (select distinct town from j))
Update j set town=town1.town where town=town2.town
Execute procedure user_msg(town2.town)
Create procedure user_msg(t char(15))
Printf(“Sorry, there is no information about town %s in database”,t);
Emd procedure
21) 1) select distinct a.n_post from spj a,spj b,p c, p d where
c.n_det<>d.n_det and c.cvet<>d.cvet and a.n_det=c.n_det and b.n_det=d.n_det and a.n_post=b.n_post and a_rowid<>b.rowid
список поставщиков, поставляющих две разных детали разного цвета.
2) Отслеживаются удаления из таблицы деталей p. Если удаляемая деталь присутствует в таблице поставок spj, то соответствующие строки из таблицы поставок связываются с деталью с минимальным весом их этого же города, если таковой имеется, в противном случае – удаляется.
22) create trigger H update on spj referencing old as original new as copy
update on spj referencing old as original referencing new as copy
for each row(when(select count(*) from s,copy
where s.n_post=copy.n_post=0)
or(select count(*) from p,copy where p.n_det=copy.n_det=0)
or(select count(*) from j,copy where j.n_izd=copy.n_izd=0))
(insert into spj, original values(original n_post,
original.n_det,original.n_izd,original.kol)
23) Отслеживать удаление строк из р, удаление каскадируется в таблицу spj, в которой удаляются поставки. Для тех поставщиков, для которых в результате удаления поставок суммарный объем поставок уменьшается более чем на 50%, рейтинг поставщика уменьшается на 25%.
24) Select distinct (k.n_izd) from spj k where not exists(
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.