ТриггерыТриггер – это процедура, автоматически вызываемая СУБД при изменении базы данных. Используется для реализации бизнес-правил (каскадных изменений), для формирования очередного значения первичного ключа, накопления статистики, резервного копирования данных. 1. Создадим триггеры для генерации ID. 1.1.CREATE TRIGGER KLIENT_BI0 FOR KLIENT ACTIVE BEFORE INSERT POSITION 0 AS begin IF(NEW.id_klienta IS NULL) THEN NEW.id_klienta = gen_id (gen_klient_id,1); End 1.2. CREATE TRIGGER PLATEGI_BI0 FOR PLATEGI ACTIVE BEFORE INSERT POSITION 0 AS begin IF(NEW.id_plat IS NULL) then NEW.id_plat=gen_id(gen_plategi_id,1); End 1.3. CREATE TRIGGER GRAFIK_VIPLAT_BI0 FOR GRAFIK_VIPLAT ACTIVE BEFORE INSERT POSITION 0 AS begin IF(NEW.id_plat_rasch is NULL) then NEW.id_plat_rasch = gen_id(gen_grafik_viplat,1); End 1.4. CREATE TRIGGER VIDACHA_BI0 FOR VIDACHA ACTIVE BEFORE INSERT POSITION 0 AS begin IF(NEW.id_vidachi IS NULL) THEN NEW.id_vidachi=gen_id(gen_vidacha_id,1); end 1.5.Триггер для каскадного удаления записи о клиенте из таблицы VIDACHA после удаления его записи из таблицы KLIENT. CREATE TRIGGER KLIENT_AI0 FOR KLIENT ACTIVE AFTER INSERT OR DELETE POSITION 0 AS begin delete from vidacha WHERE OLD.id_klienta=vidacha.id_klienta; End 1.6.Триггер для запуска процедур после добавления новой записи в таблицу PLATEGI. CREATE TRIGGER PLATEGI_AI0 FOR PLATEGI ACTIVE AFTER INSERT POSITION 0 AS begin execute procedure ost (NEW.id_vidachi,NEW.id); execute procedure prosroch (NEW.id,NEW.id_vidachi); execute procedure itog_plat (NEW.id,NEW.id_vidachi); end 1.7.Триггер для запуска процедуры после добавления новой записи в таблицу VIDACHA. CREATE TRIGGER VIDACHA_AI0 FOR VIDACHA ACTIVE AFTER INSERT POSITION 0 AS begin execute procedure symma (NEW.id_vidachi,NEW.id_klienta,NEW.id_kredita); end Генераторы Генератор - это именованный счетчик, возвращающий уникальные целочисленные значения, используется для автоматического формирования первичных ключей таблицы. Генератор может быть вставлен в столбец с помощью функции GEN_ID(). 1.Формирование первичного ключа таблицы GRAFIK_VIPLAT. CREATE GENERATOR GEN_GRAFIK_VIPLAT; SET GENERATOR GEN_GRAFIK_VIPLAT TO 1; 2.Формирование первичного ключа таблицы KLIENT. CREATE GENERATOR GEN_KLIENT_ID; SET GENERATOR GEN_KLIENT_ID TO 1; 3.Формирование первичного ключа таблицы PLATEGI. CREATE GENERATOR GEN_PLATEGI_ID; SET GENERATOR GEN_PLATEGI_ID TO 1; 4.Формирование первичного ключа таблицы VIDACHA. CREATE GENERATOR GEN_VIDACHA_ID; SET GENERATOR GEN_VIDACHA_ID TO 1;
|