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

Тип данных RAW в PL/SQL
Тип данных RAW в PL/SQL 12339 просмотров Doctor Thu, 12 Jul 2018, 08:41:33
Вывод данных в PL/SQL: DBMS_OU...
Вывод данных в PL/SQL: DBMS_OU... 34845 просмотров Akmal Mon, 03 Dec 2018, 05:24:13
Объектно-ориентированный кодин...
Объектно-ориентированный кодин... 2507 просмотров Максим Николенко Sun, 03 Nov 2019, 09:35:41
Значения NULL в языке SQL: отс...
Значения NULL в языке SQL: отс... 2613 просмотров Antoni Mon, 21 Jun 2021, 19:57:18
Войдите чтобы комментировать