Вступ до тригерів у PL / SQL

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

У нас є 3 типи тригерів БД:

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

2. DDL (Мова визначення даних): Цей тригер виконується у режимі Create, Alter, Drop, Analize, Audit, Grant тощо.

3. Подія бази даних: виконання тригерів подій БД на основі LOGON, LOGOFF, Suspend, запуску бази даних, вимкнення бази даних та інших помилок БД.

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

Тригер БД: Це PL / SQL-код, пов'язаний з поданням таблиці або подій БД.
Виконує на основі діяльності БД

  • До / після, ВСТАВИТИ, ОНОВЛЮВАТИ, ВИДАЛИТИ.
  • Виконується один раз на тригерні події або один раз у ряд, на який впливає тригер.

Виконати на основі запуску / відключення / помилки системи / відключення завантаження даних.

Як створити тригери в PL / SQL?

Ось наступні кроки для створення тригерів у PL / SQL

1. Тригери DML

Цей тригер додатково поділяється на два типи:

  • Після тригерів / Для тригерів
  • Замість курок

ПІСЛЯ спрацьовує після запуску дії. Виписки DELETE, UPDATE та INSERT є прикладом тригерів After.
INSTEAD тригерів діє замість дії. Виписки DELETE, UPDATE та INSERT також є частиною цього.

Приклад:

Для наших прикладів будемо використовувати таблиці Employee і EmployeeAudit.

SQL Script для створення таблиці співробітників:

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 додається новий співробітник. Це найпростіша програма, яку можна визначити ПІСЛЯ 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, таких як DDL_TABLE_EVENTS & type_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. Подія бази даних

Він може використовуватися для будь-яких подій БД, таких як ЛОГОН, LOGOFF, Призупинення, запуск бази даних, Вимкнення бази даних

Синтаксис:

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, така як запущений Logoff, дала огляд того, як буде працювати тригер бази даних у випадку, якщо будь-який користувач вийде зі своєї бази даних. У DML Trigger ми продемонстрували, як ПІСЛЯ тригера буде працювати, коли з’явиться новий запис будь-якого нового співробітника. Тригери DDL корисні для запобігання певних змін у базі даних та схемі.

Рекомендовані статті

Це посібник про тригери в PL / SQL. Тут ми обговорюємо, як створити тригери в PL / SQL за допомогою прикладів та переваг. Ви також можете подивитися наступну статтю.

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