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

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

Отчет по лабораторной работе №9

по предмету Базы данных

Выполнили: Шутова Екатерина

Авдиенков Олег

Преподаватель: Сидорова Наталья Петровна

Москва 2010

Задание 1

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

СREATE TRIGGER sem_polozh_validation on bel

FOR INSERT, UPDATE AS

IF

(

SELECT

COUNT(*)

FROM inserted i, family f

WHERE

i.sem_polog_k=f.cod

)=0

SELECT 'ДОБАВЛЕННАЯ ЗАПИСЬ ОШИБОЧНА: значение поля «семейное положение» должно быть от 0 до 3'

INSERT INTO bel (nomer,fio,sem_polog_k) VALUES (523454, 'Иванов Иван Иванович',5)

Задание 2

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

===========НА ДОБАВЛЕНИЕ===================

CREATE TRIGGER vuz_gorod_cascade_insert 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) VALUES (128999,'НАШ.ВУЗ')

ПРОВЕРКА ВСТАВКИ:

===========НА УДАЛЕНИЕ=========================

CREATE TRIGGER vuz_gorod_cascade_deleted 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=128999

ПРОВЕРКА:

===========НА ОБНОВЛЕНИЕ=======================

CREATE TRIGGER vuz_gorod_cascade_update ON vuz_gorod

FOR UPDATE AS

UPDATE v

SET v.cod = i.cod_vuza,

v.uch_zavedenie = i.nazvanie_vuza

FROM deleted d, vuz v, inserted i

WHERE ((d.cod_vuza = v.cod)

or (d.nazvanie_vuza = v.uch_zavedenie))

Пример: UPDATE vuz_gorod SET nazvanie_vuza='НАШ.ВУЗ' WHERE cod_vuza=129000

ПРОВЕРКА:

Задание 3

При добавлении поля nazvanie_goroda и cod_goroda в таблицу vuz_gorod, добавляется такая же запись в таблицу gorod.

CREATE TRIGGER gorod_cascade_insert ON vuz_gorod

FOR INSERT AS

BEGIN

INSERT INTO gorod (cod,nazvanie_goroda)

SELECT

cod_goroda

,nazvanie_goroda

FROM inserted

END

Пример:

INSERT INTO vuz_gorod (cod_vuza,nazvanie_vuza,cod_goroda,nazvanie_goroda,cod_stran,nazvanie_stran)

VALUES (128990,'НАШ.ВУЗ',800,'МЫШКИН',01,'РОССИЯ')

Соседние файлы в папке Авдиенков, Шутова