Скачиваний:
42
Добавлен:
28.06.2014
Размер:
47.62 Кб
Скачать

Отчёт к лабораторной работе №9

по Базам Данных

Выполнил студент группы

А-13-07

Беляков Р.Д.

Задание 1.

Создать триггер на проверку правильности ввода значений в одно из полей вашей информационной таблицы: «Год приема» (значения от ‘00’ до ‘99’), «Год окончания» (значения от ‘00’ до ‘99’), «Код категории обучения» (значения от ’01’ до ‘17’), «Код семейного положения» (значения от ‘0’ до ‘3’); значения этих полей должны быть заданы в отдельной таблице вашей БД;

create trigger t1 on poss

for insert as

if (select count(*) from cgp, inserted

where cgp.vgp=inserted.gp)=0

select ' ошибка в поле gp '

if (select count(*) from cgok, inserted

where cgok.vgok=inserted.gok)=0

select ' ошибка в поле gok '

if (select count(*) from cpol, inserted

where cpol.vpol=inserted.sem_polog_k)=0

select ' ошибка в полеsem_polog_k '

if (select count(*) from cko, inserted

where cko.vko=inserted.kat_obuch_k)=0

select ' ошибка в поле kat_obuch_k '

Задание 2.

Создать 3 отдельных триггера (для операторов INSERT, UPDATE и DELETE) для автоматического внесения изменений в таблицу VUZ (поля «Код вуза» и «Название вуза»), если вносятся такие же изменения в таблицу VUZ_GOROD.

create trigger ti

on vuz_gorod

for insert as

if @@rowcount = 1

update vuz

set cod = cod + cod_vuza

from inserted

where vuz.cod = inserted.cod_vuza

else

update vuz

set cod =

cod + (select sum(cod_vuza)

from inserted

group by inserted.cod_vuza

having vuz.cod = inserted.cod_vuza)

create trigger id

on vuz_gorod

for delete

as

if @@rowcount = 1

update vuz

set cod = cod - cod_vuza

from deleted

where vuz.cod = deleted.cod_vuza

else

update vuz

set cod = cod - (select sum(cod_vuza)

from deleted

group by deleted.cod_vuza

having vuz.cod = deleted.cod_vuza)

create trigger tu

on vuz_gorod

for update

as

if update (cod_vuza)

begin

if @@rowcount = 1

update vuz

set cod = cod + inserted.cod_vuza - deleted.cod_vuza

from inserted, deleted

where vuz.cod = inserted.cod_vuza

and inserted.cod_vuza = deleted.cod_vuza

else

begin

update vuz

set cod = cod +

(select sum(cod_vuza)

from inserted

group by inserted.cod_vuza

having vuz.cod =

inserted.cod_vuza)

update vuz

set cod = cod -

(select sum(cod_vuza)

from deleted

group by deleted.cod_vuza

having vuz.cod =

deleted.cod_vuza)

end

end

Задание 3.

create trigger tr

on poss

for insert as

if (select count(*)

from poss, inserted

where poss.spec = inserted.spec) = 0

begin

rollback transaction

select "Отсутствует специальность"

end

else

select "Добавлено"

Соседние файлы в папке Беляков