525.04K
Категория: Базы данныхБазы данных

Лекция 11.3

1.

Лекция 11.3

2.

Отключить триггеры
• При отключении триггера он остается в базе данных, но не
активируется при возникновении события, связанного с триггером.
• Сначала после ключевых слов укажите имя таблицы, к которой
принадлежит триггер ALTER TABLE.
• Во-вторых, укажите имя триггера, который вы хотите отключить
DISABLE TRIGGER, после ключевых слов или используйте ALLключевое
слово, чтобы отключить все триггеры, связанные с таблицей.

3.

• Чтобы отключить все триггеры, связанные с employees таблицей,
используйте следующий оператор:

4.

Включить триггеры
• Сначала укажите в предложении имя таблицы, к которой
относится триггер, который вы хотите включить ALTER TABLE.
• Во-вторых, укажите в предложении имя триггера, который вы
хотите включить ENABLE TRIGGER, или используйте ALLопцию ,
если вы хотите включить все триггеры, связанные с таблицей.

5.

6.

Перечисление всех триггеров с
использованием оператора SQL
• Чтобы вывести список всех
триггеров вместе с
соответствующими таблицами в
текущей базе данных, можно
использовать
information_schema.triggers
системное представление.
• Например, следующий оператор
извлекает триггеры и связанные с
ними таблицы в текущей базе
данных из
information_schema.triggers
представления:

7.

• Если вы хотите вывести список всех триггеров, связанных с определенной таблицей, вы
можете отфильтровать event_object_table столбец, указав имя таблицы в WHERE
предложении.
• Например, следующий запрос выводит список всех триггеров, связанных с employees
таблицей в текущей базе данных:

8.

Для большего удобства вы можете создать пользовательскую функцию ,
которая оборачивает вышеуказанный запрос.
Например, следующий код создает функцию с именем get_triggers(), которая
возвращает все триггеры со связанными с ними таблицами в текущей базе
данных:

9.

Следующий код создает функцию get_triggers(), которая
принимает имя таблицы и возвращает все триггеры
таблицы:
• Следующий оператор
использует get_triggers(text)
функцию для извлечения всех
триггеров таблицы employees:

10.

Список всех триггеров с использованием
представления pg_trigger
• pg_trigger системное представление, которое предоставляет
информацию о триггерах, определенных в базе данных. Вот
некоторые важные столбцы:

11.

Триггер событий PostgreSQL
Обычный триггер срабатывает всякий раз, когда в связанной таблице
происходит событие INSERT, UPDATE, DELETE, или .TRUNCATE
Для автоматического реагирования на события, связанные с DDL операторами
языка определения данных ( ), можно использовать триггер событий.
Триггер события — это триггер, который срабатывает всякий раз, когда в базе
данных происходит связанное с ним событие.
PostgreSQL поддерживает следующие события:
• ddl_command_start
• ddl_command_end
• table_rewrite
• sql_drop

12.

• Обратите внимание, что это ddl_command_start не происходит для
общих объектов, таких как базы данных, табличные пространства и
роли.
• Происходит ddl_command_end после выполнения приведенных выше
операторов DDL.
• Событие sql_drop происходит всякий раз, когда вы удаляете объект
базы данных, непосредственно перед ddl_command_end событием.
• Событие table_rewrite происходит до того, как вы переписываете
таблицу с помощью оператора ALTER TABLE or ALTER TYPE.

13.

• Функция триггера события возвращает EVENT_TRIGGER вместо
TRIGGER. Кроме того, она не имеет никаких RETURN операторов,
как обычная функция триггера.
• Во-вторых, создайте триггер события, используя CREATE EVENT
TRIGGER оператор:

14.

Сначала создайте таблицу , которая будет audits хранить журналы
аудита для команд
В audits таблице будут записаны имя пользователя, событие,
команда и временная метка при выполнении команды.
Во-вторых, определите функцию триггера события, которая
выполняется всякий раз, когда происходит соответствующее
событие:

15.

16.

Обычный триггер против триггера события

17.

• Триггер события — это триггер, который срабатывает при
возникновении события, связанного с оператором DDL.
• Используйте CREATE EVENT TRIGGER оператор для определения
нового триггера события.
English     Русский Правила