пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Программирование в интернет:
» ПИ
» ОКГТМ
» КИНФС

Мова PL/SQL. Використання тригерів баз даних. Умовні предикати. Обмеження на створення тригерів.

Триггер – это специальная процедура языка PL/SQL. Обычная процедура начинает выполняться после ее вызова специальной командой, триггер же начинает выполняться, когда происходит определенное событие с таблицей. Событиями, которые вызывают выполнение триггера, являются операции вставки, удаления или обновления, выполняемые командами INSERT, DELETE или UPDATE. Триггеры выполняются либо до, либо после выполнения этих команд. Различают два варианта триггеров: триггеры, которые выполняются при обращении команды к строке таблицы, триггеры, которые выполняются до (или после) выполнения всей команды.

Использование триггера: аудита (отслеживания) модификаций данных; прозрачной журнализации (регистрации) событий; реализации комплексных организационных правил; автоматического вычисления значений столбцов; осуществления сложных процедур защиты; поддержки дублированных таблиц; сбор статистики по обращениям к таблице предотвращения незаконных транзакций;

В триггерах БД Oracle возможно применение логических операторов ­ так называемых предикатов. Они имеют следующие определения INSERTING, UPDATING, DELETING. Это некие внутренние переменные среды Oracle, которые в зависимости от воздействующего на таблицу оператора DML принимают одно из значений TRUE или FALSE. С их помощью можно значительно сэкономить при написании кода, в чем вы в дальнейшем убедитесь и не плодить слишком большое количество объектов БД. 

  1. CREATE TRIGGER TR1 BEFORE UPDATE OF quantity, ware_id ON storages . . .
  2. BEGIN
  3. . . .
  4. IF UPDATING ('quantity') THEN
  5. . . .
  6. END IF;
  7. END;

Ограничение триггера задает булевское (логическое) выражение, которое должно быть истинным (TRUE) для того, чтобы триггер возбудился

Фраза WHEN не может быть включена в определение триггера предложения. Вычисление условия фразы WHEN не влияет на исполнение самого предложения триггера.

Ограничения DML триггеров:

  • нельзя выполнять DDL statements (только в автономной транзакции)
  • нельзя запускать подпрограммы с операторами контроля транзакций
  • не имеет доступа к SERIALLY_REUSABLE пакетов
  • размер не может превышать 32К
  • нельзя декларировать переменные типа LONG и LONG RAW 

21.01.2016; 19:13
хиты: 299
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь