Презентация по МДК.02.02. Технология разработки и защита баз данных на тему Создание и изменение триггеров


Создание и изменение триггеров Актуализация знаний Какие виды хранимых процедур мы изучили?Какие значения возвращает хранимая процедура выбора?Как вызвать хранимую процедуру выбора? 4. Какой инструкцией вызывается хранимая процедура действия?5. Для чего предназначен компонент storedProc?( Для вызова хранимой процедуры действия из приложения)6. Укажите основные свойства компонента storedProc? Использование триггеров Триггер представляет собой процедуру, которая находится на сервере БД и вызывается автоматически при модификации записей БД. В отличие от хранимых процедур, триггеры нельзя вызывать из приложения клиента, а также передавать им параметры и получать от них результаты. Создание и изменение триггераCREATE TRIGGER <Имя триггера> FOR <Имя таблицы> [ACTIVE | INACTIVE] {BEFORE | AFTER} {UPDATE | INSERT | DELETE} [POSITION <Число>] AS <Тело триггера> ACTIVE и INACTIVE определяют активность триггера сразу после его создания. BEFORE и AFTER задают момент начала выполнения триггера до или после наступления соответствующего события, связанного с изменением записей. UPDATE, INSERT и DELETE определяют, при наступлении какого события вызывается триггер — при редактировании, добавлении или удалении записей соответственно. При наличии нескольких триггеров порядок их вызова определяет число, указанное в операнде POSITION. Триггеры выполняются в порядке возрастания этих чисел. Удаление триггера: DROP TRIGGER <Имя триггера>Изменение триггера: ALTER TRIGGER (формат как у хранимой процедуры) Для доступа к значениям столбца используются конструкции формата: - OLD.<Имя столбца> - NEW.<Имя столбца> Значения OLD и NEW Значение OLD.ИмяСтолбца позволяет обратиться к состоянию столбца, имевшему место до внесения изменений, а значение NEW.ИмяСтолбца — к состоянию столбца после внесения изменений. Примеры использования триггера1. При создании таблицы задать ключевой столбец целочисленного типа.2. Создать генератор, который при обращении к нему возвращает уникальное целочисленное значение.3. Создать триггер, который при добавлении к таблице новой записи обращается к генератору и заносит возвращаемое им значение в ключевое поле. /* Создание таблицы */ CREATE TABLE Store (S_Code INTEGER NOT NULL, ... PRIMARY KEY (S_Code)); /* Создание генератора */ CREATE GENERATOR GenStore; SET GENERATOR GenStore TO 1; /* Создание триггера */CREATE TRIGGER CodeStоre FOR StoreACTIVEBEFORE INSERT AS BEGIN NEW.S_Code = GEN_ID(GenStore,1); END Ограничения ссылочной целостности для связанных таблиц включают в себя:1. каскадное удаление записей;2. запрет на редактирование ключевых столбцов. Пусть имеются две таблицы: главная Store и подчиненная Cards, связанные по полям кода s_code и c_code2 соотв-но:CREATE TABLE Store (S_Code INTEGER NOT NULL, ... PRIMARY KEY (S_Code));CREATE TABLE Cards (C_Code INTEGER NOT NULL, C_Code2 INTEGER NOT NULL, … PRIMARY KEY (C_Code) ) ; CREATE TRIGGER DeleteStore FOR StoreACTIVEAFTER DELETE AS BEGIN DELETE FROM Cards WHERE Store.S_Code = Cards.C_Code2; END Создание генераторов Для обеспечения уникальности значений ключевых столбцов совместно с триггерами используются генераторы. Генератор возвращает уникальное целочисленное значение. Генератор создается следующей инструкцией:CREATE GENERATOR <Имя генератора>;Начальное значение задается инструкцией:SET GENERATOR <Имя генератора> ТО <Начальное значение>; Обратиться к созданному генератору можно с помощью функции: GET_ID (<Имя генератора>, <Шаг>); Пример:CREATE GENERATOR GenStore;SET GENERATOR GenStore TO 1;