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

Отчет

К лабораторной работе №9

По базам данных

Выполнили:

Кохов В.В.

Крамм Е.М.

Группа: А-13-07

Преподаватель:

Сидорова Н.П.

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

create table azer1

(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))

insert codgp values ('0')

insert codgp values('1')

insert codgp values('2')

insert codgp values('3')

……………………………………………………………

insert codgp values('50')

create table codgok (gokkod char(2))

insert codgok values ('0')

insert codgok values('1')

insert codgok values('2')

insert codgok values('3')

………………………………………………………………

insert codgok values('50')

create table codkat_obuch (katkod char(2))

insert codkat_obuch values('01')

insert codkat_obuch values('02')

insert codkat_obuch values('03')

…………………………………………………………………………………

insert codkat_obuch values('17')

create table codsem_pol (semkod char(2))

insert codsem_pol values('0')

insert codsem_pol values('1')

insert codsem_pol values('2')

insert codsem_pol values('3')

create trigger main_trig on azer1

for insert as

if (select count(*) from codgp, inserted

where codgp.gpkod=inserted.gp)=0

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

if (select count(*) from codgok, inserted

where codgok.gokkod=inserted.gok)=0

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

if (select count(*) from codkat_obuch, inserted

where codkat_obuch.katkod=inserted.kat_obuch_k)=0

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

if (select count(*) from codsem_pol, inserted

where codsem_pol.semkod=inserted.sem_polog_k)=0

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

insert azer1 values

(108002,'ЖУЧКИНА СТЕЛЛА ВСЕВОЛОДОВНА ','210466','Ж',

'6','000403','03',2045656,'00','45','07','93')

go

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

create trigger intrig

on vuz_gorod

for insert as

declare @r int, @c char(25)

select @r= cod_vuza from inserted

select @c= nazvanie_vuza from inserted

insert into vuz(cod, uch_zavedenie)values (@r,@c)

insert vuz_gorod values

(2222222,'КИРОВОГР.ИНСТ.С/Х МАШ. ','111','КИРОВГРАД ','02',

'УКРАИНА ')

create trigger deltrig

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

delete from vuz_gorod where cod_vuza=2222222

craete trigger uptrig

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

update vuz_gorod set nazvanie_vuza='ААААА.АА ',

cod_vuza=2222222 where cod_vuza=333333

create trigger check_nomer

on azer1

for insert as

if(select count(*) from azer1, inserted

where azer1.nomer=inserted.nomer)>1

begin

rollback

print 'Уже есть запись с таким номером'

end;

insert azer values

(108002,'ЖУЧКИНА СТЕЛЛА ВСЕВОЛОДОВНА ','210466','Ж',

'0','000403','03',2045656,'00','87','07','93')

Соседние файлы в папке Крамм, Кохов