Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_PM_Final.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
963.07 Кб
Скачать

47. Триггеры базы данных. Операторные и строчные триггеры. Примеры.

Еще один механизм обеспечения целостности, а так же обработки данных. Триггер – специализированная процедура PL/SQL, отличающаяся способом вызова и объектом обработки данных, т.е любой триггер создается для целевой таблицы. Для запуска триггера исп–ся спец усл по кот–му сервер СУБД автоматически запускает тело триггера. Создается – CREATE. Усл запуска один из операторов DML (INSERT, UPDATE, DELETE) либо добавляются не обязательные ограничения. Т.е с помощью ограничения (фильтра) фактически усл–ия запуска просто конкретизируются (детал–ся).

Ограничение триггера – простое логическое выражение кот–е может быть задано в предложении when командой create trigger

CREATE TRIGGER reorder AFTER UPDATE OF onhand, reorder ON stock FOR EACH ROW WHEN (:new.onhand>=:new.reorder) BEGIN INSERT INTO reorder VALUES (:new.id, :new.onhand, :new.reorder); END reorder

2 типа триггеров: операторные(вып–ся 1 раз); строчные(вып–ся столько раз сколько строк связаны с данным телом тригера) FOR EACH ROW

Триггер на каскадное обновление (таблицы Rent –Realty)

CREATE OR REPLACE TRIGGER CASCADE_UPD_RNT_RLTY

AFTER UPDATE ON RENT

FOR EACH ROW

BEGIN

IF (:NEW.Type <> :OLD.Type) THEN

UPDATE REALTY SET REALTY.Type = :NEW.Type WHERE

REALTY.Type= :OLD.Type;

END IF;

END;

48. Представления.

Представление – это логическая таблица, созданная на основе реальной таблицы или другого представления. Представление не содержит собственных данных, а скорее является «окном», через которое можно просматривать или изменять данные из таблиц. Представление хранится в словаре данных как команда SELECT.

Преимущества представлений: 1)Ограничивается доступ к базе данных вследствие того, что представления могут отображать определенное подмножество базы данных. 2)С помощью простых запросов пользователь может такие же результаты, как с помощью сложных. Например, использование представлений позволяет осуществить выборку данных из нескольких таблиц без каких – либо знаний об операторе соединения таблиц (join). 3)Обеспечивается независимость данных для пользователей, посылающих случайные незапрограммированные запросы, и прикладных программ. Одно представление может использоваться для выборки данных из нескольких таблиц. 4)Использование представлений позволяет обеспечить доступ к данным по различным критериям для различных групп пользователей.

Создание представления CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW имя [(псевдоним [, псевдоним]...)] AS подзапрос [WITH CHECK OPTION [CONSTRAINT ограничение]][WITH READ ONLY]

FORCE – создание представления независимо от того, существуют ли базовые таблицы

NOFORCE создание представления только при условии существования базовых таблиц. Значение принято по умолчанию. Псевдоним – имена выражений, выбранных в запросе для представления. Количество псевдонимов должно быть = количеству выражений, выбранных представлением. Подзапрос – полная команда SELECT. Для столбцов в списке SELECT можно использовать псевдонимы. WITH CHECK OPTION режим, при котором добавлять или обновлять можно только строки, доступные в представлении. Ограничение – имя, присвоенное ограничению CHECK OPTION. WITH READ ONLY запрет применения к данному представлению операций DML.

Запрос, который определяет представление, может содержать команду SELECT со сложным синтаксисом, включая соединения, группы и подзапросы.

Запрос, который определяет представление, не может содержать предложение ORDER BY

Если вы не указываете имя ограничения сами, система присвоит его по умолчанию в формате SYS_Сn.

Для изменения определения представления без его удаления и создания заново, а также для изменения предоставленных привилегий можно использовать режим OR REPLACE.

Существуют 2 вида представлений: простые(одна таблица, нет ф–ий, операции DML есть) и сложные(одна и более таблиц, содержит ф–ии, операции DML нет). Основное отличие связано с операциями DML.Операции DML могут выполняться над представлениями в соответствии со следующими правилами:Удаление строки из представления возможно, если представление не содержит ничего из следующего(Условие соединения,Групповые функции,Предложение GROUP BY,Команда DISTINCT), Данные в представлении могут быть изменены, если представление не содержит ничего из вышеперечисленного и ничего из следующего списка:(Столбцы, описанные как выражения, например, Rn*1.5, Псевдостолбец ROWNUM), Добавление данных через представление возможно, если оно не содержит ничего из вышеперечисленного и если в базовой таблице нет столбцов типа NOT NULL, не включенных в представление. Все необходимые значения должны присутствовать в представлении. Помните, что через представление вы добавляете значения прямо в основную таблицу.

Можно сделать так, чтобы при добавлении или обновлении данных через простое представление можно было запрашивать добавленные или обновленные данные через представление. Можно сделать так, чтобы выполнение операции DML через представление было невозможно. Для этого представление создается с режимом WITH READ ONLY.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]