„PostgreSQL“

„PostgreSQL“ sukurkite aktyviklį po INSERT / UPDATE / DELETE

„PostgreSQL“ sukurkite aktyviklį po INSERT / UPDATE / DELETE
Kai apibrėžtoje lentelėje atliekamas apibrėžtas pakeitimo veiksmas („SQL INSERT“, „UPDATE“, „DELETE“ arba „TRUNCATE“ deklaracija), aktyviklis yra įvykių serija, kuri vykdoma automatiškai. Aktyvikliai gali būti naudojami verslo taisyklėms nustatyti, įvesties informacijai autentifikuoti ir audito sekai palaikyti. SQL trigeriai įgyvendinami pagal SQL formatą. Tai apima struktūras, naudojamas keliomis programavimo kalbomis, leidžiančias deklaruoti vietinius kintamuosius, stebėti proceso eigą su deklaracijomis, paskirstyti teiginių rezultatus kintamiesiems ir tvarkyti klaidas. Be to, sukūrus kažko, pvz., Lentelės, aktyviklį, aktyviklis nedelsiant pašalinamas, kai tik lentelė pašalinama. Pažiūrėsime, kaip „PostgreSQL Triggers“ veikia šiame segmente.

Sintaksė:

Tai yra paprasta sintaksė generuoti aktyviklį:

>> CREATE TRIGGER trigger_name [PRIEŠ | PO | PO | INSTEAD OF] įvykio pavadinimas ON table_name [---- Trigger Logic];

Čia yra pirmiau pateiktos bendrosios užklausos paaiškinimas.

Norėdami trumpai suprasti trigerio koncepciją, paleiskite „PostgreSQL“ apvalkalą iš programų. Pakeiskite serverį, jei norite dirbti kitame serveryje, arba paspauskite klaviatūros klavišą „Enter“. Pridėkite duomenų bazės pavadinimą, su kuriuo norite dirbti, kitaip palikite jį tokį, koks yra, ir palieskite „Enter“. Kaip matote, šiuo metu pagal nutylėjimą dirbame 5432 prievade; taip pat galite jį pakeisti. Po to pateikite kitą nei „Postgres“ vartotojo vardą, jei norite dirbti su kitu vartotoju, arba palikite jį tuščią ir paspauskite mygtuką „Enter“. Dabar jūsų komandos apvalkalas yra paruoštas naudoti.

TRIGGER Įvedus komandą

Pažvelkime į trigerio pavyzdį, kai INSERT komanda buvo naudojama kaip trigerio įvykis. Tam turime sukurti dvi naujas lenteles, el.g., „Įdarbinti“ ir „auditas“. Lentelėje „įdarbinti“ bus įrašyti darbuotojų asmeniniai įrašai iš konkrečios įmonės, o lentelėje „auditas“ - informacija apie tai, kada darbuotojai prisijungė prie įmonės. Lentelių kūrimo užklausos pateikiamos žemiau.

>> KURTI LENTEL employ įdarbinti (ID INTEGER NOT NULL PIRMINIS RAKTAS, vardas VARCHAR (100) NOT NULL, amžiaus VARCHAR (100) NOT NULL, atlyginimas VARCHAR (100) NOT NULL);

>> CREATE TABLE auditas (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);

Turite sukurti procedūrą, kuri bus automatiškai įvykdyta arba veiks, kai bus iškviestas trigeris. Jis bus naudojamas kitoje CREATE TRIGGER komandoje. Iš žemiau pateiktos komandos galite suprasti, kad mes sukūrėme procedūrą „auditlogfunc ()“, kuri grąžins aktyviklį kaip kintamąjį „$ examp_table $“. Funkcija prasideda sakiniu BEGIN, po kurio eina INSERT sakinys. Šis INSERT sakinys įterpia automatinį ID ir dabartinį laiko datą naudodamasis įmontuota funkcija į „audito“ lentelę ir grąžindamas šį rezultatą TRIGGER.

Atėjo laikas sugeneruoti TRIGGER naudojant komandą CREATE TRIGGER. Sukuriame aktyviklį pavadinimu „emp_trig“ ant lentelės „įdarbinti“. Sąlyga PO INSERT ON reiškia, kad šis aktyviklis veiks tik įvykdžius įterpimo komandą. KIEKVIENAI EILEI reiškia, kad vykdant kiekvieną INSERT komandą, šis aktyviklis iškvies ir įvykdys procedūrą „auditlogfunc ()“, sukurtą prieš pat.

>> CREATE TRIGGER emp_trig PO ĮSTATYTI ĮDIRBTI ĮDIRBTI KIEKVIENAI EILUI VYKDYTI PROCEDŪRĄ auditlogfunc ();

Laikas į lentelę „įdarbinti“ įterpti keletą duomenų. Vykdykite žemiau esančią komandą INSERT.

>> ĮSKIRSKITE įdarbinti (ID, vardas, amžius, atlyginimas) VERTYBES ('1', 'Paul', '34', '60000');

Pažvelkite į lentelę „įdarbinti“. Duomenys sėkmingai pridėti naudojant komandą INSERT.

Dabar apžvelkite „audito“ lentelę. Matote, jis taip pat atnaujinamas dėl suaktyvinimo „emp_trig“ ir auditlogfunc ().

TRIGGER atnaujinus komandą

Dabar mes nagrinėsime trigerio pavyzdį, naudojant komandą UPDATE kaip trigerio įvykį. Turime vėl sukurti naują procedūrą su kitu pavadinimu „atnaujinimas“, kaip parodyta paveikslėlyje. Pagal šią procedūrą skambučiu taip pat bus įrašomi įrašai į „audito“ lentelę.

Dabar sukurkite naują aktyviklį pavadinimu „update_emp“ naudodami komandą CREATE TRIGGER. Tai veiks tik įvykdžius UPDATE užklausą lentelėje, ir procedūra bus vadinama „atnaujinimu“.

Atnaujinkite lentelę „naudoti“ nustatydami jos ID į „2“.

Norėdami peržiūrėti pakeitimus, kaip nurodyta toliau, pateikite lentelės „naudoti“ įrašus.

Kaip matote lentelėje „auditas“, ji buvo pertvarkyta, nes atnaujinta lentelė „įdarbinti“.

TRIGGER ištrynus komandą

Norėdami atidaryti „GUI PostgreSQL“, atidarykite „pgAdmin 4“ iš programų. Pagal schemą „testas“ rasite lentelių sąrašą. Sukurkite naują lentelę „emp“ ir tą pačią „audito“ lentelę.

Šį kartą sukviesime komandą „DELETE“. Žemiau yra lentelė „emp“ su kai kuriais įrašais.

Čia yra audito lentelė su dviem ankstesniais atnaujinimais.

Sukurkite procedūrą pavadinimu „Del ()“, kad įjungtumėte įterpimą į lentelę „auditas“ ištrynę įrašus iš lentelės „emp“.

Sukurkite aktyviklį „del_trig“ naudodami užklausą KURTI PALEISIKLĮ. Šis aktyviklis atliks procedūrą „Del“, kai lentelėje „emp“ bus atlikta tam tikra ištrynimo sąlyga.

Ištrinkime įrašą iš lentelės „emp“, kur darbuotojo „id“ yra „5“. Jis ištrins vieną eilutę iš lentelės „emp“.

Gaukite lentelės „emp“ įrašus ir pažvelkite į juos. Galite pamatyti, kad eilutė pašalinta, kur „id“ buvo „5“.

Dabar ištraukite „audito“ lentelės įrašus ir pastebėsite, kad jie buvo atnaujinti, nes lentelėje „emp“ atlikta DELETE operacija.

Išvada:

Mes atlikome beveik kiekvieną esminį pavyzdį, kad suprastume TRIGGER sąvoką atlikdami INSERT, UPDATE ir DELETE operacijas.

Naudingi įrankiai „Linux“ žaidėjams
Jei jums patinka žaisti žaidimus „Linux“ sistemoje, yra tikimybė, kad galbūt naudojote tokias programas ir įrankius kaip „Wine“, „Lutris“ ir „OBS Stud...
„HD Remastered“ žaidimai, skirti „Linux“, kurie niekada anksčiau nebuvo išleisti „Linux“
Daugelis žaidimų kūrėjų ir leidėjų siūlo senų žaidimų HD remasterį, kad prailgintų franšizės laiką. Prašome gerbėjų, prašančių suderinamumo su šiuolai...
Kaip naudoti „AutoKey“, norint automatizuoti „Linux“ žaidimus
„AutoKey“ yra darbalaukio automatizavimo įrankis, skirtas „Linux“ ir „X11“, užprogramuotas „Python 3“, „GTK“ ir „Qt“. Naudodami scenarijų ir „MACRO“ f...