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

Лабораторные работы (2011) / Ганишев / Лабораторная работа 9

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

МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

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

по дисциплине

«Базы данных и экспертные системы»

подготовил:

студент группы А-13-08

Ганишев В.

проверил:

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

Цель:

  1. Практически освоить создание и использование элементарных триггеров.

  1. Научиться использовать предопределенные таблицы в теле триггеров.

Задание:

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

Создаём таблицу, содержащую допустимые коды семейного положения:

create table codsem (sempol char(1))

insert codsem values (0)

insert codsem values (1)

insert codsem values (2)

insert codsem values (3)

Триггер, проверяющий корректность кода семейного положения:

create trigger sempol_check on bel

for insert, update as

if (select count(*) from codsem, inserted

where (inserted.sem_polog_k = codsem.sempol)) = 0

select 'Добавленная/Изменённая запись содержит ошибку. Код семейного положения изменяется в диапазоне от 0 до 3'

insert bel (nomer, fio, sem_polog_k) values (523454, 'Симонов Серафим Георгиевич', '5')

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

  1. create trigger vg_insert_check on vuz_gorod

for insert as

begin

insert vuz (cod,uch_zavedenie)

select cod_vuza, nazvanie_vuza from inserted

end

  1. create trigger vg_delete_check on vuz_gorod

for delete as

begin

delete vuz

from vuz, deleted

where deleted.cod_vuza = vuz.cod

end

create trigger vg_update_check on vuz_gorod

for update as

if UPDATE(cod_vuza)

begin

update vuz

set cod = inserted.cod_vuza

from inserted,deleted,vuz

where cod=deleted.cod_vuza

end

if UPDATE(nazvanie_vuza)

begin

update vuz

set uch_zavedenie = inserted.nazvanie_vuza

from inserted,deleted,vuz

where cod=deleted.cod_vuza

end

update vuz_gorod set cod_vuza = 1 where cod_vuza = 128955