Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы (А-13-07) / Алехин, Макашова / Макашова_Алехин_Лабораторная_работа_9

.doc
Скачиваний:
38
Добавлен:
28.06.2014
Размер:
65.54 Кб
Скачать

Лабораторная работа 9

Вариант № 1

Выполнили студенты группы А-13-07

Макашова Мария

Алехин Роман

Задание:

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

create table uzb0

(nomer integer,

fio char (40),

d_rogd char(2),

m_rogd char(2),

g_rogd char(2),

pol char(1),

sem_polog_k char(1),

spec char(6),

kat_obuch_k char(2),

vuz_k integer,

mp char(2),

gp char(2),

mo char(2),

gok char(2))

create table check_kat_obuch (cod_k_o char(2))

insert check_kat_obuch values ('00')

insert check_kat_obuch values ('01')

insert check_kat_obuch values ('02')

insert check_kat_obuch values ('03')

insert check_kat_obuch values ('04')

insert check_kat_obuch values ('05')

insert check_kat_obuch values ('06')

insert check_kat_obuch values ('07')

insert check_kat_obuch values ('08')

insert check_kat_obuch values ('09')

insert check_kat_obuch values ('10')

insert check_kat_obuch values ('11')

insert check_kat_obuch values ('12')

insert check_kat_obuch values ('13')

insert check_kat_obuch values ('14')

insert check_kat_obuch values ('15')

insert check_kat_obuch values ('16')

create trigger kat_obuch_0 on uzb0

for insert as

if (select count(*) from check_kat_obuch, inserted

where check_kat_obuch. cod_k_o=inserted.kat_obuch_k)=0

select 'значение поля kat_obuch_k не принадлежит домену'

insert into uzb0 (fio,kat_obuch_k)

values ('Иванов Иван Иванович', '18')

insert into uzb0 (fio,kat_obuch_k)

values ('Иванов Иван Иванович', '11')

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

INSERT

CREATE TRIGGER insTrigger ON vuz_gorod

FOR INSERT AS

BEGIN

INSERT INTO vuz (cod,uch_zavedenie)

SELECT

cod_vuza

,nazvanie_vuza

FROM inserted

END

insert

into vuz_gorod

(cod_vuza, nazvanie_vuza, cod_goroda, nazvanie_goroda, nazvanie_stran)

values

(1, 'tempVUZ', 101, 'tempGOROD', 'tempSTRAN')

select *

from vuz_gorod

where cod_vuza = 1

select *

from vuz

where cod = 1

DELETE

CREATE TRIGGER delTrigger ON vuz_gorod

FOR DELETE AS

BEGIN

DELETE vuz

FROM deleted,vuz

WHERE

vuz.cod=deleted.cod_vuza

END

delete

from vuz_gorod

where cod_vuza = 1

select *

from vuz_gorod

where cod_vuza = 1

select *

from vuz

where cod = 1

UPDATE

CREATE TRIGGER updTrigger ON vuz_gorod

for update as

begin

update vuz

set vuz.cod = inserted.cod_vuza, vuz.uch_zavedenie = inserted.nazvanie_vuza

from deleted, vuz, inserted

where ((deleted.cod_vuza = vuz.cod)

or (deleted.nazvanie_vuza = vuz.uch_zavedenie))

end

update vuz_gorod

set nazvanie_vuza = 'newVUZ'

from vuz_gorod

where cod_vuza = 1

select *

from vuz_gorod

where cod_vuza = 1

select *

from vuz

where cod = 1

Свой триггер

CREATE TRIGGER updGorodTrigger ON vuz_gorod

for update as

begin

update gorod

set gorod.cod = inserted.cod_goroda, gorod.nazvanie_goroda = inserted.nazvanie_goroda

from deleted, vuz, inserted

where ((deleted.cod_goroda = gorod.cod)

or (deleted.nazvanie_goroda = gorod.nazvanie_goroda))

end

update vuz_gorod

set nazvanie_stran = 'newSTRAN'

from vuz_gorod

where cod_vuza = 1

select *

from vuz_gorod

where cod_vuza = 1

select *

from vuz

where cod = 1