Контрольная работа: Особенности проектирования баз данных

begin

update books C

set C.id_publishers = new.id_publishers

where c.id_publishers = old.id_publishers;

end

else

begin

delete from books C

where c.id_publishers = old.id_publishers;

end

end

^

SET TERM ; ^

Так как данный триггер выполняется при изменении и удалении записей из таблицы «PUBLISHERS», то в нём задано условие, проверяющее, какая операция над записями этой таблицы производится. IF (updating) THEN= ИСТИНА, если операция изменения (UPDATE), иначе =ЛОЖЬ (для данного триггера это операция удаления). В первом случае производится каскадное обновление записей при помощи оператора изменения данных UPDATE, во втором каскадное удаление при помощи операции DELETEFROM. В обоих случаях условием отбора записей на изменение или удаление является равенство значений поля «ID_PUBLISHERS» таблицы «BOOKS» и старым значением поля «ID_PUBLISHERS» таблицы «PUBLISHERS». В случае изменения данных этим полям присваиваются новые значения записей.

Аналогично создадим триггер каскадного обновления и удаления записей таблицы «BOOKS» при обновлении и удалении соответствующих им записей в таблице «READERS» – «READERS_CASCADE_BOOKS». Разница здесь в том, что триггер будет задан для таблицы «READERS» и в записях сравниваются значения полей «ID_ABONENT».


Создание хранимых процедур

Создадим три хранимых процедуры.

Первая процедура будет выводить список книг, находящихся в библиотеке. Для этого зададим запрос на выборку списка книг, в поле «BOOKS.ID_ABONENT» которых стоит значение NULL.

Для создания новой процедуры выберем Procedures\NewProcedure(Процедуры\Новая процедура). Выберем OutputParameters (Выходные Параметры) затем Insertparameter/variable (Добавить параметр/переменную). Добавим параметр «NAME_BOOKS VARCHAR(30)» под название книги, а также ещё два – под наименование и город издательства – соответственно «NAME_PUBLISHERS VARCHAR(20)» и «CITY_PUBLISHERS VARCHAR(20)».

Листинг первой процедуры «BOOKS_LIBRARY»:

CREATE PROCEDURE BOOKS_LIBRARY

returns (

city_publishers varchar(20) character set win1251,

name_publishers varchar(20) character set win1251,

name_books varchar(30) character set win1251)

as

begin

for

select distinct books.name, publishers.name, publishers.city

from books inner join publishers on books.id_publishers = publishers.id_publishers

К-во Просмотров: 413
Бесплатно скачать Контрольная работа: Особенности проектирования баз данных