PostgreSQL

PostgreSQL Izveidot trigeri pēc INSERT / UPDATE / DELETE

PostgreSQL Izveidot trigeri pēc INSERT / UPDATE / DELETE
Ikreiz, kad noteiktā izmaiņu darbība (SQL INSERT, UPDATE, DELETE vai TRUNCATE deklarācija) tiek veikta noteiktā tabulā, trigeris ir notikumu virkne, kas tiek izpildīta automātiski. Aktivizētājus var izmantot, lai uzliktu uzņēmējdarbības kārtību, autentificētu ievades informāciju un uzturētu revīzijas liecību. SQL aktivizētāji tiek ieviesti atbilstoši SQL formātam. Tas ietver struktūras, kas tiek izmantotas vairākās programmēšanas valodās, ļaujot deklarēt vietējos mainīgos, uzraudzīt procesa plūsmu ar deklarācijām, piešķirt izraksta rezultātus mainīgajiem un apstrādāt kļūdas. Turklāt, izveidojot aktivizētāju kaut kam, piemēram, tabulai, trigeris tiek nekavējoties noņemts, tiklīdz tabula ir noņemta. Mēs izskatīsim, kā PostgreSQL aktivizētāji darbojas visā šajā segmentā.

Sintakse:

Šī ir vienkārša sintakse, lai ģenerētu trigeri:

>> CREATE TRIGGER trig_name [PIRMS | PĒC | INSTEAD OF] notikuma nosaukums ON table_name [---- Aktivizētāja loģika];

Šeit ir iepriekš minētā vispārīgā vaicājuma skaidrojums.

Lai īsi saprastu sprūda jēdzienu, no lietojumprogrammām palaidiet čaulu PostgreSQL. Mainiet serveri, ja vēlaties strādāt citā serverī, vai arī nospiediet enter no tastatūras. Pievienojiet datu bāzes nosaukumu, ar kuru vēlaties strādāt, pretējā gadījumā atstājiet to tādu, kāds tas ir, un pieskarieties enter. Kā redzat, mēs pašlaik noklusējuma strādājam pie 5432 porta; jūs to varat arī mainīt. Pēc tam norādiet citu lietotājvārdu, nevis Postgres, ja vēlaties strādāt ar citu lietotāju, vai arī atstājiet to tukšu un nospiediet pogu Enter. Tagad jūsu komandas apvalks ir gatavs lietošanai.

TRIGGER Pēc INSERT komandas

Apskatīsim trigera piemēru, kad INSERT komanda ir izmantota kā sprūda notikums. Tam mums ir jāizveido divas jaunas tabulas, piemēram, e.g., “Nodarbināt” un “audits”. Tabulā “nodarbināt” būs darbinieku personīgie ieraksti no konkrēta uzņēmuma, un tabulā “audits” būs informācija par to, kad darbinieki pievienojās uzņēmumam. Vaicājumi tabulu izveidei ir norādīti zemāk.

>> IZVEIDOT GALDA darbu (ID INTEGER NOT NULL PRIMARY Key, Name VARCHAR (100) NOT NULL, Age VARCHAR (100) NOT NULL, Alga VARCHAR (100) NOT NULL);

>> IZVEIDOT TABULAS auditu (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);

Jums ir jāizveido procedūra, kas tiks automātiski izpildīta vai darbosies, kad tiks izsaukts trigeris. To izmantos nākamajā komandā CREATE TRIGGER. No zemāk esošās komandas varat iegūt ideju, ka mēs esam izveidojuši procedūru “auditlogfunc ()”, kas atgriezīs trigeri kā mainīgo “$ examp_table $”. Funkcija sākas ar klauzulu BEGIN, kam seko INSERT paziņojums. Šis INSERT paziņojums automātisko ID un pašreizējo laika datumu, izmantojot iebūvēto funkciju, ievieto tabulā “audit” un atgriež šo rezultātu TRIGGER.

Ir pienācis laiks ģenerēt TRIGGER, izmantojot komandu CREATE TRIGGER. Mēs izveidojam trigeri ar nosaukumu “emp_trig” uz tabulas “nodarbināt”. Klauzula PĒC INSERT ON nozīmē, ka šis trigeris darbosies tikai pēc ievietošanas komandas izpildes. Katrai rindai nozīmē, ka, izpildot katru INSERT komandu, šis trigeris izsauks un izpildīs “auditlogfunc ()” procedūru, kas izveidota tieši pirms.

>> CREATE TRIGGER emp_trig PĒC IEVADĪŠANAS PAR NODARBINĀŠANU PAR KATRU RĪCU IZPILDES PROCEDŪRA auditlogfunc ();

Ir pienācis laiks ievietot dažus datus tabulā “nodarbināt”. Izpildiet zemāk esošo komandu INSERT čaulā.

>> IEVADĪT nodarbināt (ID, vārds, vecums, alga) VĒRTĪBAS ('1', 'Paul', '34', '60000');

Ieskaties tabulā “nodarbināt”. Dati ir veiksmīgi pievienoti ar komandu INSERT.

Tagad ieskatieties “revīzijas” tabulā. Var redzēt, ka tas ir arī atjaunināts, jo tiek aktivizēts “emp_trig” un auditlogfunc ().

TRIGGER pēc atjaunināšanas komandas

Tagad mēs aplūkosim trigera piemēru, izmantojot komandu UPDATE kā sprūda notikumu. Mums atkal jāizveido jauna procedūra ar citu nosaukumu “update”, kā parādīts attēlā. Šī procedūra pēc pieprasījuma arī iekļaus ierakstus tabulā “revīzija”.

Tagad izveidojiet jaunu trigeri ar nosaukumu “update_emp”, izmantojot komandu CREATE TRIGGER. Tas darbosies tikai pēc tam, kad tabulā tiks izmantots UPDATE vaicājums, un tā sauks procedūru “update”.

Atjauniniet tabulu “nodarbināt”, iestatot tās ID uz “2”.

Lai skatītu izmaiņas, kas pievienotas zemāk, ielādējiet tabulas “nodarbināt” ierakstus.

Kā redzat uz tabulas “revīzija”, tā tika reorganizēta, kad tabula “nodarbināt” tika atjaunināta.

TRIGGER Pēc komandas DELETE

Atveriet pgAdmin 4 no lietojumprogrammām, lai strādātu ar GUI PostgreSQL. Saskaņā ar shēmu “tests” jūs atradīsit tabulu sarakstu. Izveidojiet jaunu tabulu “emp” un to pašu “audita” tabulu.

Šoreiz aktivizēšanas komandu izsauksim ar komandu DELETE. Zemāk ir tabula “emp” ar dažiem ierakstiem.

Šeit ir revīzijas tabula ar diviem iepriekšējiem atjauninājumiem.

Izveidojiet procedūru ar nosaukumu “Del ()”, lai aktivizētu ievietošanu tabulā “audit” pēc ierakstu dzēšanas no tabulas “emp”.

Izmantojot vaicājumu CREATE TRIGGER, izveidojiet aktivizētāju “del_trig”. Šis aktivizētājs izpildīs procedūru “Del”, kad tabulā “emp” tiks izpildīta kāda DELETE klauzula.

Dzēsīsim ierakstu no tabulas “emp”, kur darbinieka “id” ir “5”. Tas izdzēsīs vienu rindu no tabulas “emp”.

Iegūstiet tabulas “emp” ierakstus un apskatiet tos. Varat redzēt, ka rinda ir noņemta, ja “id” bija “5”.

Tagad izvelciet “audita” tabulas ierakstus un pamanīsit, ka tas ir atjaunināts, jo tabulā “emp” ir veikta DELETE darbība.

Secinājums:

Mēs esam izdarījuši gandrīz visus būtiskos piemērus, lai izprastu TRIGGER jēdzienu, veicot INSERT, UPDATE un DELETE operācijas.

Labākie Linux spēļu draiveri 2021. gadā
Linux operētājsistēma ir gājusi tālu no sākotnējā, vienkāršā uz serveriem balstītā izskata. Šī operētājsistēma pēdējos gados ir ārkārtīgi uzlabojusies...
Kā tvert un straumēt spēļu sesiju operētājsistēmā Linux
Agrāk spēļu spēlēšana tika uzskatīta tikai par hobiju, taču laika gaitā spēļu industrija piedzīvoja milzīgu tehnoloģiju un spēlētāju skaita pieaugumu....
Labākās spēles, ko spēlēt ar rokas izsekošanu
Oculus Quest nesen iepazīstināja ar lielisku ideju par rokas izsekošanu bez kontrolieriem. Ar arvien lielāku spēļu un aktivitāšu skaitu, kas atbalsta ...