PostgreSQL

PostgreSQL Trigeri loomine pärast INSERT / UPDATE / DELETE

PostgreSQL Trigeri loomine pärast INSERT / UPDATE / DELETE
Kui määratletud tabelis viiakse läbi määratletud muutmistoiming (SQL INSERT, UPDATE, DELETE või TRUNCATE deklaratsioon), on päästik rea sündmuste kogum, mis käivitatakse automaatselt. Käivitajate abil saab kehtestada ärireegleid, autentida sisendinfot ja säilitada kontrolljälge. SQL-i päästikud rakendatakse vastavalt SQL-vormingule. See sisaldab mitmes programmeerimiskeeles kasutatavaid struktuure, mis võimaldavad deklareerida kohalikke muutujaid, jälgida deklaratsioonidega protsessi voogu, eraldada muutujate väljavõtete tulemusi ja käsitleda vigu. Peale selle, kui olete millegi, näiteks tabeli, päästiku koostanud, eemaldatakse päästik kohe, kui tabel eemaldatakse. Vaatame, kuidas PostgreSQL-i käivitajad kogu selles segmendis toimivad.

Süntaks:

Järgmine on päästiku genereerimise lihtne süntaks:

>> CREATE TRIGGER trigger_name [ENNE | PÄRAST | INSTEAD OF] sündmuse nimi SEES tabeli_nimi [---- Trigger Logic];

Siin on ülaltoodud üldise päringu selgitus.

Käivituskontseptsiooni lühiajaliseks mõistmiseks käivitage rakendustest PostgreSQL-i kest. Kui soovite töötada mõnes teises serveris, vahetage serverit või vajutage klaviatuurilt sisestusklahvi. Lisage andmebaasi nimi, millega soovite töötada, vastasel juhul jätke see selliseks nagu see on ja puudutage sisestusklahvi. Nagu näete, töötame praegu vaikimisi pordil 5432; saate seda ka muuta. Pärast seda sisestage muu kasutajanimi kui Postgres, kui soovite töötada teise kasutajaga, või jätke see tühjaks ja vajutage sisestusklahvi. Nüüd on teie käsukoor kasutamiseks valmis.

TRIGGER INSERT käsk

Vaatame päästiku näidet, kui päästiku sündmusena on kasutatud käsku INSERT. Selleks peame looma kaks uut tabelit, nt.g., "Tööle" ja "audit". Tabel "tööle" sisaldab töötajate isiklikke andmeid konkreetsest ettevõttest ja tabel "audit" sisaldab teavet selle kohta, millal töötajad ettevõttega liitusid. Tabelite loomise päringud on toodud allpool.

>> LOE TABEL, kus töötab (ID INTEGER EI NULL PÕHIVÕTI, nimi VARCHAR (100) NOT NULL, vanus VARCHAR (100) NOT NULL, palk VARCHAR (100) NOT NULL);

>> CREATE TABLE audit (tühjendage INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);

Peate looma protseduuri, mis käivitatakse automaatselt või töötab päästiku kutsumisel. Seda kasutatakse järgmises CREATE TRIGGER käsus. Allolevast käsust saate aimu, et oleme loonud protseduuri “auditlogfunc ()”, mis tagastab päästiku muutujana “$ examp_table $”. Funktsioon algab klausliga BEGIN, millele järgneb lause INSERT. See käsk INSERT sisestab sisseehitatud funktsiooni abil automaatse ID ja praeguse kuupäeva kuupäevale “audit” ning tagastab selle tulemuse TRIGGER-le.

On aeg luua TRIGGER käsu CREATE TRIGGER abil. Loome tabelisse "tööle" päästiku nimega "emp_trig". Klausel AFTER INSERT ON tähendab, et see päästik töötab alles pärast käsu insert sisestamist. IGAS RIDAS tähendab iga käsu INSERT täitmisel see päästik ja käivitab vahetult enne loodud protseduuri “auditlogfunc ()”.

>> CREATE TRIGGER emp_trig PÄRAST INSERT-i sisestamist tööle rakendamiseks IGA RIDA TÄITMISE MENETLUS auditlogfunc ();

On aeg sisestada mõned andmed tabelisse "tööle". Käivitage kestas järgmine käsk INSERT.

>> INSERT INTO tööle (ID, nimi, vanus, palk) VÄÄRTUSED ('1', 'Paul', '34', '60000');

Heitke pilk tabelile "tööle". Andmed on edukalt lisatud käsuga INSERT.

Nüüd heitke pilk auditi tabelile. Näete, et seda värskendatakse ka käivitades “emp_trig” ja auditlogfunc ().

TRIGGER käsku UUENDAMISEL

Vaatame nüüd päästiku näidet, mis kasutab käsku UPDATE päästiku sündmusena. Peame uuesti looma uue protseduuri, millel on erinev nimi "update", nagu pildil näidatud. See protseduur lisab kõne korral ka kirjed tabelisse „audit”.

Nüüd looge käsuga CREATE TRIGGER uus päästik nimega “update_emp”. See töötab ainult pärast seda, kui tabelis UPDATE päring on täidetud, ja see kutsub protseduuri "update".

Värskendage tabelit “tööle”, määrates selle ID väärtuseks “2”.

Allpool lisatud muudatuste vaatamiseks tooge tabeli kirjed "tööle".

Nagu tabelis „audit” näha, on see ümber korraldatud, kuna tabelit „tööle” ajakohastati.

TRIGGER käsku Kustuta

Avage pgAdmin 4 rakendustest, et töötada GUI PostgreSQL-is. Skeemi “test” alt leiate tabelite loendi. Looge uus tabel “emp” ja sama “audit” tabel.

Seekord kutsume päästiku käsu käsuga DELETE. Allpool on tabel “emp” koos mõne kirjega.

Siin on kahe eelmise värskendusega audititabel.

Looge protseduur nimega “Del ()”, et käivitada sisestamine tabelisse “audit”, kui kustutate kirjed tabelist “emp”.

Looge päästik „del_trig”, kasutades päringut CREATE TRIGGER. See päästik käivitab protseduuri “Del”, kui tabelis “emp” täidetakse mõni kustutusklausel.

Kustutame tabelist „emp” kirje, kus töötaja „id” on „5”. See kustutab tabelist „emp” ühe rea.

Toogige tabeli “emp” kirjed ja vaadake seda. Saate vaadata, et rida on eemaldatud, kui „id” oli „5”.

Eemaldage nüüd tabeli “audit” kirjed ja märkate, et seda on värskendatud, kuna tabelis “emp” on tehtud KUSTUTAMISE toiming.

Järeldus:

Oleme teinud peaaegu kõik olulised näited TRIGGERi mõiste mõistmiseks operatsioonide INSERT, UPDATE ja DELETE teostamisel.

Kasulikud tööriistad Linuxi mängijatele
Kui teile meeldib Linuxis mänge mängida, on tõenäoline, et olete mängukogemuse parandamiseks kasutanud selliseid rakendusi ja utiliite nagu Wine, Lutr...
HD Remastered Games Linuxile, millel pole kunagi varem Linuxi väljalaset olnud
Paljud mängude arendajad ja kirjastajad pakuvad frantsiisi eluea pikendamiseks välja vanade mängude HD-remasteri. Palun fännid, kes soovivad ühilduvus...
Kuidas kasutada AutoKeyt Linuxi mängude automatiseerimiseks
AutoKey on Linuxi ja X11 töölaua automatiseerimise utiliit, mis on programmeeritud Python 3, GTK ja Qt. Selle skriptimise ja MACRO funktsionaalsuse ab...