PostgreSQL

PostgreSQL Създаване на задействане след INSERT / UPDATE / DELETE

PostgreSQL Създаване на задействане след INSERT / UPDATE / DELETE
Винаги, когато дефинирано действие за промяна (SQL INSERT, UPDATE, DELETE или TRUNCATE декларация) се извършва на определена таблица, задействането е набор от събития, които се изпълняват автоматично. Задействанията могат да се използват за налагане на бизнес правила, удостоверяване на въведената информация и поддържане на одиторска следа. SQL задействанията се реализират според SQL формата. Включва структури, използвани в няколко програмни езика, които ви позволяват да декларирате локални променливи, да наблюдавате потока на процеса с декларации, да разпределяте резултатите от оператори към променливи и да обработвате грешки. Освен това, след като конструирате задействане за нещо, като таблица, задействането веднага се премахва веднага щом таблицата бъде премахната. Ще разгледаме как функционират тригерите PostgreSQL в този сегмент.

Синтаксис:

По-долу е простият синтаксис за генериране на задействане:

>> СЪЗДАЙТЕ TRIGGER име_на задействане [ПРЕДИ | СЛЕД | ВМЕСТО] име на събитие НА име на таблица [---- Логика на задействане];

Ето обяснението на горната обща заявка.

За да разберете накратко концепцията за задействане, стартирайте черупката 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.

Най-добрите емулатори на игрови конзоли за Linux
Тази статия ще изброи популярния софтуер за емулация на игрова конзола, наличен за Linux. Емулацията е слой за софтуерна съвместимост, който емулира х...
Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...
Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...