Лабораторные работы (А-13-07) / Мигачев,Заварзин / LabWork_9
.docx
Лабораторная работа № 9
Выполнили: Заварзин Е.В.
Мигачев Д.А.
Задание 1:
Создать триггер на проверку правильности ввода значений в одно из полей вашей информационной таблицы: «Год приема» (значения от ‘00’ до ‘99’), «Год окончания» (значения от ‘00’ до ‘99’), «Код категории обучения» (значения от ’01’ до ‘17’), «Код семейного положения» (значения от ‘0’ до ‘3’); значения этих полей должны быть заданы в отдельной таблице вашей БД;
Создаем таблицу, содержащую валидные года приема:
Триггер, проверяющий валидность года приема:
create trigger god_postupl_check on mold
for insert, update as
if (select count(*) from goda_priema,inserted
where (inserted.gp=goda_priema.god))=0
SELECT ДОБАВЛЕНАЯ ЗАПИСЬ СОДЕРЖИТ ОШИБКУ: Год приема должен быть между 00 и 99'
Задание 2:
Создать 3 отдельных триггера (для операторов INSERT, UPDATE и DELETE) для автоматического внесения изменений в таблицу VUZ (поля «Код вуза» и «Название вуза»), если вносятся такие же изменения в таблицу VUZ_GOROD.
CREATE TRIGGER vuz_insert ON vuz_gorod
FOR INSERT AS
BEGIN
INSERT vuz (cod,uch_zavedenie)
select cod_vuza,nazvanie_vuza from inserted
END
2)
alter TRIGGER vuz_delete ON vuz_gorod
FOR delete AS
BEGIN
delete vuz
from vuz,deleted
where
deleted.cod_vuza=vuz.cod
END
3)
alter TRIGGER vuz_update ON vuz_gorod
FOR update AS
BEGIN
update vuz
set vuz.cod=ins.cod_vuza,vuz.uch_zavedenie=ins.nazvanie_vuza
from deleted del, vuz,inserted ins
where
(del.cod_vuza=vuz.cod)
END
4)
Alter TRIGGER Gorod_insert ON vuz_gorod
FOR INSERT AS
BEGIN
if (select count(*) from inserted, gorod where inserted.nazvanie_goroda=gorod.nazvanie_goroda )= 0
INSERT gorod (cod, nazvanie_goroda)
select cod_goroda,nazvanie_goroda FROM inserted
END