Что такое триггеры PL/SQL? Код, выполняемый по событию

Doc

Doc

АйТишник со стажем... Профиль автора.

Триггеры PL/SQLТриггеры PL/SQL -  это именованные программные блоки, выполняемые в ответ на происходящие в базе данных Oracle события. Они относятся к числу важнейших элементов профессио­нально спроектированных приложений Oracle и обычно используются для выполнения следующих действий:

  •  Проверка вносимых в таблицы изменений. Поскольку логика проверки данных не­посредственно связана с конкретным объектом базы данных, триггеры гарантируют ее строгое выполнение и соблюдение.
  •  Автоматизация сопровождения базы данных. Начиная с Oracle8i можно было ис­пользовать триггеры, автоматически выполняемые при загрузке и выгрузке базы данных, для выполнения операций инициализации и очистки. Это значительно удобнее, чем создавать для этих операций внешние по отношению к базе данных сценарии.
  •  Точная настройка ограничений на выполнение административных операций. При помощи триггеров можно проверить, допускается ли выполнение определенной операции над конкретным объектом базы данных (например, удаление или моди­фикация таблицы). Когда правила проверки реализованы в виде триггеров, обойти их очень трудно, если вообще возможно.

Существуют пять видов событий, с которыми можно связывать триггеры:

  •  Команды DML (Data Manipulation Language). Триггеры DML запускаются в ответ на вставку, обновление и удаление строки таблицы базы данных. Их можно исполь­зовать с целью проверки значений, устанавливаемых по умолчанию, выполнения аудита изменений и даже запрета определенных команд DML.
  •  Команды DDL (Data Definition Language). Триггеры DDL запускаются в ответ на выполнение команд DDL — например, при создании таблицы. С их помощью можно выполнять аудит и запрещать определенные операции.
  •  События базы данных. Триггеры событий базы данных используются при запуске и остановке базы данных, при подключении и отключении сервера, а также при возникновении ошибок Oracle. Начиная с Oracle8i они также позволяют получать информацию об операциях с базой данных.
  •  Триггеры INSTEAD OF. Замещающие триггеры (триггеры INSTEAD OF) являются альтернативой триггерам DML. Они запускаются непосредственно перед операци­ями вставки, обновления, удаления, и их код определяет, какие действия следует выполнить вместо соответствующей операции DML. Триггеры INSTEAD OF управля­ют операциями над представлениями, но не над таблицами. С их помощью можно преобразовывать необновляемые представления в обновляемые, изменяя при не­обходимости их поведение.
  •  Приостановленные команды. В Oracle9i введена концепция приостановленных команд. Если в ходе выполнения команды возникла проблема доступности простран­ства (недостаточно табличного пространства или исчерпана квота), Oracle может перевести ее в режим приостановления до тех пор, пока проблема не будет решена. С данным событием можно связать триггер, который автоматически уведомляет пользователя о проблеме или даже самостоятельно устраняет ее.

Все эти типы триггеров будут рассматриваться мною в последующих блогах. Для каждого из них приво­дится описание синтаксиса, примеры и рекомендации по применению.

Если вам потребуется эмулировать триггеры для команд SELECT (запросов), изучите механизм FGA (Fine-Grained Auditing), описанный в книге Oracle PL/SQL for DBAs (издательство O’Reilly).

 

 

Вас заинтересует / Intresting for you:

Специализированные приемы опти...
Специализированные приемы опти... 3850 просмотров Akmal Tue, 27 Nov 2018, 13:04:32
Модели разрешений / прав Oracl...
Модели разрешений / прав Oracl... 3406 просмотров Максим Николенко Thu, 03 Oct 2019, 16:44:17
Управление транзакциями в PL/S...
Управление транзакциями в PL/S... 6920 просмотров sepia Wed, 15 Aug 2018, 19:01:20
Оптимизация приложения Oracle ...
Оптимизация приложения Oracle ... 1652 просмотров Александров Попков Fri, 16 Nov 2018, 14:41:20
Войдите чтобы комментировать