Введение в триггеры в PL / SQL

Триггеры базы данных - это код PL / SQL, который выполняется на основе события в базе данных, такого как INSERT, UPDATE, Alter, Drop, Login, Logoff и т. Д. Триггеры базы данных помогают нам сохранять простые и короткие коды SQL. Триггеры базы данных полезны для управления всеми изменениями и отслеживания всех этих изменений с использованием обновлений, удалений, изменений, входа в систему, выхода из системы и т. Д. В базе данных, схемах базы данных и ее таблицах.

У нас есть 3 типа триггеров БД:

1. DML (язык манипулирования данными): триггеры DML выполняются при INSERT, UPDATE & DELETE в таблицах.

2. DDL (язык определения данных): этот триггер выполняется при создании, изменении, отбрасывании, анализе, аудите, предоставлении и т. Д.

3. Событие базы данных: выполнение триггеров событий базы данных на основе LOGON, LOGOFF, Suspend, запуска базы данных, выключения базы данных и других ошибок базы данных.

Вот еще одна характеристика триггеров БД:

Триггер БД: это код PL / SQL, связанный с табличным представлением или событием БД.
Выполняется на основе активности БД

  • До / После, ВСТАВИТЬ, ОБНОВИТЬ, УДАЛИТЬ.
  • Выполняется один раз за инициирующие события или один раз за строку, на которую воздействует триггер.

Выполнить на основе запуска / выключения / системной ошибки / отключения загрузки данных.

Как создать триггеры в PL / SQL?

Вот следующие шаги для создания триггеров в PL / SQL

1. Триггеры DML

Этот триггер далее делится на два типа:

  • После триггеров / Для триггеров
  • Вместо триггеров

ПОСЛЕ срабатывания триггера после инициирующего действия. Операторы DELETE, UPDATE и INSERT являются примером триггеров After.
INSTEAD Триггеры действует вместо действия. Операторы DELETE, UPDATE и INSERT также являются его частью.

Пример:

Мы будем использовать таблицы Employee и EmployeeAudit для наших примеров.

SQL Script для создания таблицы Employee:

CREATE TABLE Employee
(
Id int Primary Key,
Name nvarchar(30),
Salary int,
Gender nvarchar(10),
DepartmentId int
)
Insert data into Employee table
Insert into Employee values (1, 'Prakash', 5000, 'Male', 3)
Insert into Employee values (2, 'Robert', 3400, 'Male', 2)
Insert into Employee values (3, 'Anji', 6000, 'Female', 1)

Стол сотрудника

SQL Script для создания таблицы EmployeeAudit:

CREATE TABLE EmployeeAudit
(
Id int identity(1, 1) primary key,
AuditData nvarchar(1000)
)

мы будем фиксировать идентификатор, а также дату и время при каждом добавлении нового сотрудника в таблицу EmployeeAudit. Это самая простая программа для определения AFTER TRIGGER для события INSERT.

2. DDL Триггеры

Он в основном используется для предотвращения определенных изменений в вашей схеме базы данных

Синтаксис

CREATE TRIGGER trigger_name
ON (DATABASE | ALL SERVER)
(WITH ddl_trigger_option) FOR (event_type | event_group )
AS (sql_statement)

имя-триггера для указания определенного имени триггера после ключевых слов CREATE TRIGGER. Кроме того, вам не нужно указывать схему базы данных, потому что она не связана с реальной таблицей базы данных или представлением.

База данных | Весь сервер: если триггер срабатывает на событиях в области сервера, мы можем использовать ВСЕ СЕРВЕР. Используйте DATABASE, если триггер срабатывает при событиях в области базы данных

ddl_trigger_option: он определяет предложение ENCRYPTION и / или EXECUTE AS.

тип события | event_group: Event_group - это группа событий event_type, таких как DDL_TABLE_EVENTS & Event_type, указывает событие DDL, которое вызывает срабатывание триггера, например ALTER_TABLE, CREATE_TABLE и т. д.

Пример:

Выполнение триггера в ответ на событие CREATE_TABLE DDL.

CREATE TRIGGER MyFirstTrigger
ON Database
FOR CREATE_TABLE
AS
BEGIN
Print 'New table created'
END

Проверьте, был ли триггер создан в папке триггера базы данных, и если вы его не получили, обновите папку (триггер базы данных).

3. База данных Событие

Его можно использовать для любых событий БД, таких как LOGON, LOGOFF, Suspend, запуск базы данных, завершение работы базы данных.

Синтаксис:

CREATE (OR REPLACE) TRIGGER trigger_name
(BEFORE | AFTER) (database_event) ON (DATABASE | SCHEMA)
DECLARE
…some code…
END;

имя-триггера для указания определенного имени триггера после ключевых слов CREATE TRIGGER.

В основном, событие database_event происходит в таких базах данных, как выход из системы, вход в систему, завершение работы и т. д. Мы можем выбрать, какую базу данных или схему будет использовать этот триггер.

Пример: триггер выхода

Здесь мы можем продемонстрировать триггер событий базы данных LOGOFF. Этот триггер создаст одну запись в таблице (выход из системы), когда кто-либо отключится.
Этот триггер запишет имя пользователя и время отключения.

Создание таблицы выхода из системы:

create table logoff_table (
who varchar2(30),
when date
);

Создание триггера выхода из системы:

create trigger trg_logoff
before logoff on database
begin
insert into logoff_table values(sys_context('userenv', 'session_user'), sysdate);
end;
/

Здесь, в приведенном выше триггере, мы создали Tigger для мониторинга выхода из системы любого пользователя. Этот триггер будет выполнен после выхода из системы пользователей базы данных. Таблица выхода из системы будет содержать некоторые данные Имя пользователя и время выхода из него (Вы можете решить детали согласно требованию).

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

Преимущество триггеров в PL / SQL

  • Хорошо для аудита.
  • Хорошо для манипулирования данными.
  • Применяйте сложные схемы безопасности.
  • Обеспечить соблюдение бизнес-правил.
  • Запретить изменения в базе данных и схеме.
  • Код PL / SQL короче с использованием триггеров.
  • Следите за изменениями в таблицах базы данных, схемы и БД.
  • Управление записями действий в базе данных полезно при устранении неполадок.
  • Нет необходимости проверять изменения в базе данных вручную, триггер всегда выполняет действие самостоятельно при наступлении определенного события.

Вывод

В этой главе мы узнали о типах триггеров, таких как триггеры событий DDL, DML и Database. Мы также узнали, что триггеры DDL можно использовать для INSERT, UPDATE, DELETE и т. Д. Операторы операторов и DML предназначены для создания, изменения, удаления и т. Д. В таблицах базы данных, но триггеры событий базы данных работают при любом выходе из системы. Приостановить, действие по запуску базы данных, выполненное в базе данных.

Синтаксис каждого триггера прост для понимания и может быть легко преобразован в код PL / SQL. Программа PL / SQL, такая как запущенный выход из системы, дала обзор того, как триггер базы данных будет работать в случае любого выхода пользователя из своей базы данных. В DML Trigger мы продемонстрировали, как будет работать AFTER Trigger, когда появится новая запись любого нового сотрудника. Триггеры DDL полезны для предотвращения каких-либо конкретных изменений в базе данных и схеме.

Рекомендуемые статьи

Это руководство по триггерам в PL / SQL. Здесь мы обсуждаем, как создавать триггеры в PL / SQL с примерами и преимуществами. Вы также можете посмотреть на следующую статью.

  1. Курсоры в PL / SQL
  2. Оператор CASE в PL / SQL
  3. Что такое PL / SQL?
  4. Команды PL / SQL
  5. Первичный ключ против внешнего ключа | Основные отличия