Что такое триггеры 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:

Использование констант в запро...
Использование констант в запро... 4844 просмотров Дэйзи ак-Макарова Sat, 12 Jun 2021, 18:48:10
Globalization Development Kit ...
Globalization Development Kit ... 2288 просмотров Максим Николенко Sun, 20 Oct 2019, 14:06:22
Встроенные методы коллекций PL...
Встроенные методы коллекций PL... 14838 просмотров sepia Tue, 29 Oct 2019, 09:54:01
Символьные функции и аргументы...
Символьные функции и аргументы... 18586 просмотров Анатолий Wed, 23 May 2018, 18:54:01
Войдите чтобы комментировать