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

Лабораторные работы (2011) / Афанасьев / Лабораторная работа 9

.docx
Скачиваний:
45
Добавлен:
28.06.2014
Размер:
693.99 Кб
Скачать

Московский Энергетический Институт, Технический Университет

ЛАБОРАТОРНАЯ РАБОТА №9

Афанасьев Сергей.

А-13-08

Вариант: 4

Задания

Задание 1

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

create table uzb3

(nomer integer,

fio char (40) not null,

data_rogden char (6),

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 codgp (gpkod char(2))

declare @i integer

set @i = 0

while (@i < 99)

begin

insert into codgp values(@i)

set @i = @i + 1

end

create trigger main_trig on uzb3

for insert as

if (select count(*) from codgp, inserted

where codgp.gpkod=inserted.gp)=0

select ‘Недопустимое значение поля gp’

Задание 2.

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

create trigger insert_trig on vuz_gorod

for insert as

declare @r int, @c char(25)

select @r= cod from inserted

select @c= uch_zavedenie from inserted

insert into vuz(cod_vuza, nazvanie_vuza) values (@r,@c)

create trigger delete_trig

on vuz_gorod

for delete as

declare @r int, @c char(25)

select @r= cod_vuza from deleted

select @c= nazvanie_vuza from deleted

delete from vuz where cod=@r and uch_zavedenie=@c

create trigger update_trig

on vuz_gorod

for update as

declare @r int, @c char(25)

declare @r_n int, @c_n char(25)

select @r= cod_vuza from deleted

select @c= nazvanie_vuza from deleted

select @r_n= cod_vuza from inserted

select @c_n= nazvanie_vuza from inserted

update vuz set cod=@r_n, uch_zavedenie= @c_n

where vuz.cod=@r and vuz.uch_zavedenie=@c

Свой триггер

create trigger insert_trig2 on vuz_gorod

for insert as

declare @g char(25), @a int;

select @g = nazvanie_goroda from inserted;

select @a = count(*) from gorod where (nazvanie_goroda = @g);

if (@a = 0)

insert into gorod(nazvanie_goroda) values (@g)

insert vuz_gorod(cod_vuza, nazvanie_vuza, nazvanie_goroda) values (1020, 'Инст1', 'МСК')