Синтаксис:
По-долу е простият синтаксис за генериране на задействане:
>> СЪЗДАЙТЕ TRIGGER име_на задействане [ПРЕДИ | СЛЕД | ВМЕСТО] име на събитие НА име на таблица [---- Логика на задействане];Ето обяснението на горната обща заявка.
- Trigger_name: Име на спусъка
- ПРЕДИ, СЛЕД, ВМЕСТО: Условия, които решават кога задействането ще бъде активно
- Име_на събитие: Заглавие на събитието, което може да активира задействането (Това може да бъде, независимо дали от INSERT или UPDATE или DELETE)
- Име на таблица: Задава таблицата, върху която ще бъде конструиран задействането
За да разберете накратко концепцията за задействане, стартирайте черупката PostgreSQL от приложенията. Сменете сървъра, ако искате да работите на друг сървър, или натиснете Enter от клавиатурата. Добавете името на базата данни, върху което искате да работите, в противен случай го оставете както е и докоснете enter. Както можете да видите, в момента работим по порт 5432 по подразбиране; можете също да го промените. След това предоставете потребителско име, различно от Postgres, ако искате да работите с друг потребител, или го оставете празно и натиснете бутона за въвеждане. Сега вашата командна обвивка е готова за използване.
TRIGGER при команда INSERT
Нека разгледаме примера на задействане, когато командата INSERT е била използвана като събитие за задействане. За това трябва да създадем две нови таблици, напр.ж., „Наемам” и „одитор”. Таблицата „наемане“ ще съдържа личните записи на служителите от конкретна компания, а таблицата „одит“ ще съдържа информация кога служителите са се присъединили към компанията. Заявките за създаване на таблици са дадени по-долу.
>> СЪЗДАЙТЕ ТАБЛИЦА наемете (ID INTEGER NOT NULL PRIMARY KEY, Name VARCHAR (100) NOT NULL, Age VARCHAR (100) NOT NULL, Salary VARCHAR (100) NOT NULL);>> СЪЗДАВАНЕ на одит на таблица (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);
Трябва да създадете процедура, която автоматично ще бъде изпълнена или ще работи, когато тригерът бъде извикан. Той ще бъде използван в следващата команда CREATE TRIGGER. От командата по-долу можете да добиете представа, че създаваме процедура “auditlogfunc ()”, която ще върне тригер като променлива “$ examp_table $”. Функцията започва с клауза BEGIN, последвана от израза INSERT. Този оператор INSERT вмъква автоматичен идентификатор и текущ час-дата, използвайки вградената функция в таблицата „одит“ и връща този резултат на TRIGGER.
Време е да генерирате TRIGGER, като използвате командата CREATE TRIGGER. Създаваме тригер на име „emp_trig“ в таблицата „наемам“. Клаузата AFTER INSERT ON означава, че този задействащ механизъм ще работи само след изпълнението на командата за вмъкване. ЗА ВСЕКИ РЯД означава при изпълнение на всяка команда INSERT, този тригер ще извика и изпълни процедурата “auditlogfunc ()”, създадена непосредствено преди.
>> СЪЗДАЙТЕ TRIGGER emp_trig СЛЕД ВЪВЕЖДАНЕ ВКЛЮЧЕТЕ ЗА ВСЯКА РЕДНА ИЗПЪЛНЕНА ПРОЦЕДУРА auditlogfunc ();
Време е да вмъкнете някои данни в таблицата „използвайте“. Изпълнете командата INSERT по-долу в черупката.
>> ВЪВЕДЕТЕ В НАЕМ (ИД, Име, Възраст, Заплата) СТОЙНОСТИ ('1', 'Paul', '34', '60000');
Погледнете таблицата „наемете“. Данните са добавени успешно с командата INSERT.
Сега погледнете таблицата „одит“. Можете да видите, той също се актуализира поради задействане “emp_trig” и auditlogfunc ().
TRIGGER при команда за актуализиране
Сега ще разгледаме пример за задействане, използващо командата UPDATE като събитие за задействане. Трябва да създадем нова процедура отново с различното име „update“, както е представено на изображението. Тази процедура също ще вмъкне записи в таблицата „одит“ при повикване.
Сега създайте нов тригер на име „update_emp“, като използвате командата CREATE TRIGGER. Това ще работи само след изпълнението на UPDATE заявката в таблицата и ще извика процедурата „update“.
Актуализирайте таблицата „използвайте“, като зададете нейния идентификатор на „2“.
Вземете записите на таблица „използвайте“, за да видите промените, както е приложено по-долу.
Както можете да видите на таблицата „одит“, тя е реорганизирана с актуализирането на таблицата „наемане“.
TRIGGER при команда DELETE
Отворете pgAdmin 4 от приложения, за да работите с GUI PostgreSQL. Под схемата „тест“ ще откриете списък с таблици. Създайте нова таблица „emp“ и същата таблица „одит“.
Този път ще извикаме командата за задействане от командата DELETE. По-долу е таблицата „emp“ с някои записи.
Ето таблицата за одит с предишните две актуализации.
Създайте процедура с име „Del ()“, за да задействате вмъкването в таблицата „одит“ при изтриване на записите от таблица „emp“.
Създайте тригер “del_trig”, използвайки заявката CREATE TRIGGER. Този тригер ще изпълни процедурата „Del“, когато в таблицата „emp“ ще бъде изпълнена някаква клауза DELETE.
Нека изтрием запис от таблицата „emp“, където служителят „id“ е „5“. Той ще изтрие един ред от таблицата „emp“.
Вземете записите на таблица „emp“ и я погледнете. Можете да видите, че редът е премахнат, където „id“ е „5“.
Сега извлечете записите на таблицата „одит“ и ще забележите, че те са актуализирани, защото операцията DELETE е извършена върху таблицата „emp“.
Заключение:
Направихме почти всеки основен пример, за да разберем концепцията за TRIGGER, докато изпълняваме операции INSERT, UPDATE и DELETE.