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

Задействанията на базата данни са PL / SQL кодът, който се изпълнява въз основа на събитие в базата данни като INSERT, UPDATE, Alter, Drop, Login, Logoff и др. Задействанията на базата данни ни помагат да поддържаме SQL кодовете прости и кратки. Задействанията на базата данни са полезни при управлението на всички промени и проследяването на всички тези промени, като се използва Update, Delete, Alter, login, Logoff и т.н. в Database, Database схеми и нейните таблици.

Имаме 3 вида задействания на DB:

1. DML (Език за манипулиране на данни): DML задействанията се изпълняват на INSERT, UPDATE & DELETE в таблиците.

2. DDL (език за дефиниране на данни): Този тригер се изпълнява при създаване, промяна, пускане, анализ, одит, предоставяне и т.н.

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

Ето още една характеристика на тригерите на DB:

Задействане на DB: Това е PL / SQL код, свързан с изглед на таблица или DB събитие.
Изпълнява на базата на DB дейност

  • Преди / след, INSERT, UPDATE, DELETE.
  • Изпълнява се веднъж на задействащи събития или веднъж на ред, засегнат от спусъка.

Изпълнете въз основа на стартиране / изключване / системна грешка / изключване на зареждането на данни.

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

Ето следните стъпки за създаване на задействания в PL / SQL

1. Задействания на DML

Този спусък е допълнително разделен на два типа:

  • След тригери / За тригери
  • Вместо задействания

СЛЕД СЛЕД задействане след задействане на действие. DELETE, UPDATE и INSERT оператори са пример за тригери After.
INSTEAD на тригери действа вместо действието. DELETE, UPDATE и INSERT също са част от него.

Пример:

Ще използваме таблиците Employee и EmployeeAudit за нашите примери.

SQL скрипт за създаване на таблица на служителите:

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 скрипт за създаване на таблицата EmployeeAudit:

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

ние ще заснемем идентификационния номер и датата и часа, когато добавим нов служител в таблицата EmployeeAudit. Това е най-лесната програма за дефиниране СЛЕД ТРИГЕРА за събитието 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 клауза.

събитие_тип | събитие_група: събитието_група е група от събития от типа на събитията като DDL_TABLE_EVENTS & типът събитие указва DDL събитие, което причинява задействане на тригера като, ALTER_TABLE, CREATE_TABLE и т.н.

Пример:

Изпълнение на задействане в отговор на събитието DDRE CREATE_TABLE.

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

Проверете дали тригерът е създаден под папката на тригера на базата данни и ако не го получите, моля опреснете папката (задействане на база данни).

3. Събитие от база данни

Може да се използва за всякакви DB събития като LOGON, LOGOFF, Suspend, Startup Database, Database Shutting

Синтаксис:

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

име_задействащо е да укажете определеното име на спусъка след ключовите думи CREATE TRIGGER.

base_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 кодът е по-къс с помощта на тригери.
  • Следете промените в базата данни, схемите и таблиците на DB.
  • Управлението на записи на действия в базата данни е полезно за отстраняване на проблеми.
  • Не е необходимо да проверявате промените в базата данни ръчно, спусъкът винаги сам предприема действия при конкретно събитие.

заключение

Ето тази глава, научихме за типове задействания като DDL, DML и задействания на събития на база данни. Освен това научихме, докато DDL тригерът може да се използва за INSERT, UPDATE, DELETE и др. Извлеченията и DML задействанията са предназначени за създаване, промяна, пускане и т.н. … в таблиците на базата данни, но задействането на събитие на базата данни работи, когато има влизане в системата, Спиране, стартиране на базата данни действие, извършено в базата данни.

Синтаксисът на всеки тригер е лесен за разбиране и може лесно да се конвертира в PL / SQL код. Програмата PL / SQL като задействане на вход се даде преглед на начина, по който задейства задействането на базата данни в случай, че някой потребител излезе от своята база данни. В DML Trigger демонстрирахме как СЛЕД ТРИГУРА ще работи, след като има нов запис на всеки нов служител. DDL тригерите са полезни за предотвратяване на конкретни промени в базата данни и схемата.

Препоръчителни статии

Това е ръководство за задействания в PL / SQL. Тук обсъждаме Как да създадете тригери в PL / SQL с примери и предимства. Можете също да разгледате следната статия.

  1. Курсори в PL / SQL
  2. CASE оператор в PL / SQL
  3. Какво е PL / SQL?
  4. PL / SQL команди
  5. Първичен ключ срещу външен ключ | Топ разлики