Корпоративные базы данных - статьи




Триггеры - часть 2


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

Поскольку триггер запускается автоматически при изменении содержимого таблицы, любой
пользователь, обладающий привилегиями по отношению к этой таблице, может запустить триггер.
Следует отметить, что триггер всегда запускается с привилегиями автора, а не пользователя, т.е. на
время выполнения триггера пользователь получает привилегии автора процедуры, вызываемой
триггером.

Триггер может быть определен для выполнения либо перед операцией insert/update/delete (before
триггер), либо после нее (after триггер). Типичный пример использования before триггеров -
проверка данных. After триггеры полезны в тех случаях, когда хранимая процедура триггера
содержит код, анализирующий содержимое таблицы, на которой определен триггер, и этот код
должен включать результаты последней операции insert/update/delete.

Операции insert/update/delete, которые содержат предложения WHERE или суб-запросы (sub-
selects), модифицируют более одной строки таблицы. Триггеры SQLBase могут быть
сконфигурированы таким образом, чтобы запускаться только один раз за всю операцию или
каждый раз при изменении отдельной строки.

Update триггеры могут быть определены таким образом, чтобы запускаться только при изменении
отдельных колонок таблицы (селективные update триггеры) или реагировать на любое изменение
данных в таблице.

При передаче данных в процедуры триггеров можно использовать следующие типы данных в
качестве параметров процедур:


  • Значения колонок таблицы - Поскольку триггер определяется на конкретной
    таблице базы данных, он "знает" о ее строении: количестве, именах и типах
    колонок и т.д. Поэтому значения колонок таблицы могут передаваться в
    процедуру непосредственно по своим именам.
  • Константы
  • Псевдоконстанты - В процедуру можно передавать некоторые ключевые
    слова SQLBase, такие как USER, SYSTIME и другие.

Если в процессе выполнения операции UPDATE содержимое колонки изменяется, имеется



Содержание  Назад  Вперед