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

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

Триггеры.

Выполнили:

Ахремцев Я.В. Стрельцов А.А.

Проверила:

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

Задание 1.

Заполняем таблицу:

declare @i integer;

set @i = 1;

while (@i <= 99)

begin

insert into gp_dop values(@i)

set @i = @i + 1

end;

Триггер:

create trigger study_trig on cir

for insert as

if (select count(*) from gp_dop, inserted

where convert(char(2), gp_dop.gp) = inserted.gp) = 0

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

Запрос:

insert into cir (nomer, fio, gp) values(123123123, 'asdasasd','00')

Результат:

Задание 2.

Разработать триггер, который срабатывает при выполнении любого из трех операторов: update, delete, insert в таблице vuz_gorod, с целью коррекции таблицы vuz.

  1. Триггер для insert

create trigger vuz_gorod_insert on vuz_gorod

for insert as

declare @cod VARCHAR(50), @uch_zav VARCHAR(50)

SET @cod = (select cod_vuza from inserted)

SET @uch_zav = (select nazvanie_vuza from inserted)

insert into vuz (cod, uch_zavedenie) values (@cod, @uch_zav)

Пример работы:

insert vuz_gorod values (12895225, 'ВУЗ2', 08911, 'asd', 01, 'РОССИЯ')

select * from vuz where vuz.uch_zavedenie = 'ВУЗ2'

  1. Триггер для delete

create trigger vuz_gorod_delete on vuz_gorod

for delete as

declare @cod VARCHAR(50), @uch_zav VARCHAR(50)

SET @cod = (select cod_vuza from deleteed)

SET @uch_zav = (select nazvanie_vuza from deleteed)

delete from vuz where vuz.cod = @cod and vuz.uch_zavedenie = @uch_zav

Пример работы:

delete from vuz where vuz.uch_zavedenie = 'ВУЗ2'

select * from vuz where vuz.uch_zavedenie = 'ВУЗ2'

  1. Триггер для update

create trigger vuz_gorod_update on vuz_gorod

for update as

declare @cod_ins VARCHAR(50), @uch_zav_ins VARCHAR(50),

@cod_del VARCHAR(50), @uch_zav_del VARCHAR(50)

SET @cod_ins = (select cod_vuza from inserted)

SET @uch_zav_ins = (select nazvanie_vuza from inserted)

SET @cod_del = (select cod_vuza from deleted)

SET @uch_zav_del = (select nazvanie_vuza from deleted)

update vuz

SET

vuz.cod = @cod_ins,

vuz.uch_zavedenie = @uch_zav_ins

where

vuz.cod = @cod_del and vuz.uch_zavedenie = @uch_zav_del

update vuz_gorod

set

cod_vuza = 12910511,

nazvanie_vuza = 'changed'

where

vuz_gorod.cod_vuza = 129105

Соседние файлы в папке Ахремцев, Стрельцов