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