PostgreSQL

PostgreSQL Creați declanșatorul după INSERT / UPDATE / DELETE

PostgreSQL Creați declanșatorul după INSERT / UPDATE / DELETE
Ori de câte ori se efectuează o acțiune de modificare definită (declarație SQL INSERT, UPDATE, DELETE sau TRUNCATE) pe un tabel definit, un declanșator este un set de evenimente care sunt executate automat. Declanșatoarele pot fi utilizate pentru a impune reguli de afaceri, pentru a autentifica informațiile de intrare și pentru a menține o pistă de audit. Declanșatoarele SQL sunt implementate în conformitate cu formatul SQL. Include structuri utilizate în mai multe limbaje de programare care vă permit să declarați variabile locale, să monitorizați fluxul procesului cu declarații, să alocați rezultatele instrucțiunilor variabilelor și să gestionați erorile. Mai mult, odată ce construiți un declanșator pentru ceva, cum ar fi o masă, declanșatorul este îndepărtat imediat de îndată ce masa este eliminată. Ne vom uita la modul în care funcționează declanșatoarele PostgreSQL pe acest segment.

Sintaxă:

Următoarea este sintaxa simplă pentru generarea unui declanșator:

>> CREATE TRIGGER trigger_name [ÎNAINTE | DUPĂ | ÎN LOC DE] event-name ON table_name [---- Trigger Logic];

Iată explicația interogării generale de mai sus.

Pentru a înțelege pe scurt conceptul declanșatorului, lansați shell-ul PostgreSQL din aplicații. Schimbați serverul dacă doriți să lucrați pe alt server sau altfel apăsați Enter de pe tastatură. Adăugați numele bazei de date la care doriți să lucrați, altfel, lăsați-l așa cum este și atingeți Enter. După cum puteți vedea, lucrăm în prezent la portul 5432 ca implicit; îl puteți schimba și. După aceea, furnizați un alt nume de utilizator în afară de Postgres dacă doriți să lucrați cu alt utilizator sau altfel lăsați-l necompletat și apăsați butonul Enter. Acum comanda dvs. de comandă este gata de utilizare.

TRIGGER După comanda INSERT

Să vedem exemplul unui declanșator atunci când comanda INSERT a fost utilizată ca eveniment de declanșare. Pentru aceasta, trebuie să creăm două tabele noi, e.g., „Angajare” și „audit”. Tabelul „angajare” va conține înregistrările personale ale angajaților de la o anumită companie, iar tabelul „audit” va conține informații despre momentul în care angajații s-au alăturat companiei. Interogările pentru crearea tabelelor sunt date mai jos.

>> CREARE TABEL angajat (ID INTEGER NOT NULL KEY PRIMARY, Nume VARCHAR (100) NOT NULL, Vârsta VARCHAR (100) NOT NULL, Salariu VARCHAR (100) NOT NULL);

>> CREARE TABLE audit (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);

Trebuie să creați o procedură care va fi executată automat sau va funcționa atunci când va fi apelat declanșatorul. Acesta va fi utilizat în următoarea comandă CREATE TRIGGER. Din comanda de mai jos, vă puteți face o idee că am creat o procedură „auditlogfunc ()”, care va returna un declanșator ca variabilă „$ examp_table $”. Funcția începe cu clauza BEGIN, urmată de instrucțiunea INSERT. Această instrucțiune INSERT inserează automat ID-ul și data curentă folosind funcția încorporată în tabelul „audit” și returnând acest rezultat la TRIGGER.

Este timpul să generați un TRIGGER folosind comanda CREATE TRIGGER. Creăm un declanșator numit „emp_trig” pe tabelul „employ”. Clauza AFTER INSERT ON înseamnă că acest declanșator va funcționa numai după executarea comenzii de inserare. PENTRU FIECARE RÂND înseamnă că la executarea fiecărei comenzi INSERT, acest declanșator va apela și va executa procedura „auditlogfunc ()” creată chiar înainte.

>> CREAȚI TRIGGER emp_trig DUPĂ INSERARE PE angajare PENTRU FIECARE RAND EXECUTĂ PROCEDURA auditlogfunc ();

Este timpul să introduceți câteva date în tabelul „angajați”. Executați comanda INSERT de mai jos în shell.

>> INSERT INTO angajează (ID, Nume, Vârstă, Salariu) VALORI ('1', 'Paul', '34', '60000');

Aruncați o privire la tabelul „angajați”. Datele au fost adăugate cu succes cu comanda INSERT.

Acum aruncați o privire asupra tabelului „audit”. Puteți vedea, este, de asemenea, actualizat datorită declanșării „emp_trig” și auditlogfunc ().

TRIGGER La comanda UPDATE

Vom analiza acum un exemplu de declanșator care utilizează comanda UPDATE ca eveniment declanșator. Trebuie să creăm din nou o nouă procedură cu numele diferit „actualizare” așa cum este prezentat în imagine. Această procedură va introduce, de asemenea, înregistrări în tabelul „audit” la apel.

Acum, creați un nou declanșator numit „update_emp” utilizând comanda CREATE TRIGGER. Acest lucru va funcționa numai după executarea interogării UPDATE pe tabelul angajat și va numi procedura „actualizare”.

Actualizați tabelul „angajare” setând ID-ul său la „2”.

Aduceți înregistrările unui tabel „utilizați” pentru a vizualiza modificările așa cum se anexează mai jos.

După cum puteți vedea pe tabelul „audit”, acesta a fost reorganizat pe măsură ce tabelul „angajează” a fost actualizat.

TRIGGER După comanda DELETE

Deschideți pgAdmin 4 din aplicații pentru a lucra pe GUI PostgreSQL. Sub schema „test”, veți descoperi o listă de tabele. Creați un nou tabel „emp” și același tabel „audit”.

De data aceasta vom invoca comanda de declanșare prin comanda DELETE. Mai jos este tabelul „emp” cu câteva înregistrări.

Iată tabelul de audit cu cele două actualizări anterioare.

Creați o procedură numită „Del ()” pentru a declanșa inserarea în tabelul „audit” după ștergerea înregistrărilor din tabelul „emp”.

Creați un declanșator „del_trig” utilizând interogarea CREATE TRIGGER. Acest declanșator va executa procedura „Del” când va fi efectuată o clauză DELETE pe tabelul „emp”.

Să ștergem o înregistrare din tabelul „emp” în care „id”-ul angajatului este „5”. Se va șterge un rând din tabelul „emp”.

Aduceți înregistrările tabelului „emp” și aruncați o privire la el. Puteți vedea că rândul a fost eliminat acolo unde „id” era „5”.

Acum extrageți înregistrările tabelului „audit” și veți observa că a fost actualizat deoarece operațiunea ȘTERGERE a fost efectuată pe tabelul „emp”.

Concluzie:

Am făcut aproape fiecare exemplu esențial pentru a înțelege conceptul de TRIGGER în timp ce efectuăm operații de INSERT, UPDATE și DELETE.

OpenTTD Tutorial
OpenTTD is one of the most popular business simulation games out there. In this game, you need to create a wonderful transportation business. However,...
SuperTuxKart for Linux
SuperTuxKart is a great title designed to bring you the Mario Kart experience free of charge on your Linux system. It is pretty challenging and fun to...
Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...