PostgreSQL

PostgreSQL Vytvoriť spúšťač po INSERT / UPDATE / DELETE

PostgreSQL Vytvoriť spúšťač po INSERT / UPDATE / DELETE
Kedykoľvek sa definovaná akcia zmeny (vyhlásenie SQL INSERT, UPDATE, DELETE alebo TRUNCATE) vykoná na definovanej tabuľke, spúšťačom je séria udalostí, ktoré sa vykonajú automaticky. Spúšťače možno použiť na vynútenie obchodných pravidiel, autentifikáciu vstupných informácií a údržbu auditovacej stopy. Spúšťače SQL sa implementujú podľa formátu SQL. Zahŕňa štruktúry používané v niekoľkých programovacích jazykoch, ktoré umožňujú deklarovať lokálne premenné, monitorovať priebeh procesu pomocou deklarácií, prideľovať výstupy príkazov premenným a spracovávať chyby. Ďalej, ak skonštruujete spúšťač pre niečo, napríklad tabuľku, spúšťač sa okamžite odstráni, akonáhle sa odstráni tabuľka. Pozrime sa na to, ako fungujú PostgreSQL spúšťače v tomto segmente.

Syntax:

Nasleduje jednoduchá syntax na generovanie spúšťača:

>> CREATE TRIGGER trigger_name [BEFORE | AFTER | INSTEAD OF] event-name ON table_name [---- Trigger Logic];

Tu je vysvetlenie vyššie uvedeného všeobecného dotazu.

Aby ste stručne pochopili koncept spúšťača, spustite z aplikácií shell PostgreSQL. Zmeňte server, ak chcete pracovať na inom serveri, alebo stlačte kláves Enter na klávesnici. Pridajte názov databázy, na ktorej chcete pracovať, inak ju nechajte tak, ako je, a klepnite na kláves Enter. Ako vidíte, momentálne pracujeme na porte 5432 ako predvolenom; môžete to tiež zmeniť. Potom zadajte iné používateľské meno ako Postgres, ak chcete pracovať s iným používateľom, alebo ho nechajte nevyplnené a stlačte kláves Enter. Teraz je váš príkazový shell pripravený na použitie.

SPUŠŤ Na príkaz INSERT

Pozrime sa na príklad spúšťača, keď sa ako udalosť spúšťača použil príkaz INSERT. Za týmto účelom musíme vytvoriť dve nové tabuľky, napr.g., „Zamestnať“ a „audit“. Tabuľka „zamestnať“ bude obsahovať osobné záznamy zamestnancov konkrétnej spoločnosti a tabuľka „audit“ bude obsahovať informácie o tom, kedy sa zamestnanci pripojili k spoločnosti. Nižšie sú uvedené dotazy na vytvorenie tabuliek.

>> VYTVORIŤ TABUĽKU zamestnať (ID INTEGER NIE JE NULL PRVÝ KĽÚČ, meno VARCHAR (100) NIE NULL, Vek VARCHAR (100) NIE NULL, Plat VARCHAR (100) NIE NULL);

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

Musíte vytvoriť postup, ktorý sa automaticky vykoná alebo bude fungovať, keď sa vyvolá spúšťač. Použije sa v ďalšom príkaze CREATE TRIGGER. Z nasledujúceho príkazu môžete získať predstavu, že vytvárame procedúru „auditlogfunc ()“, ktorá vráti spúšťač ako premennú „$ examp_table $“. Funkcia začína klauzulou BEGIN, za ktorou nasleduje príkaz INSERT. Tento príkaz INSERT vloží automatické ID a aktuálny dátum a čas pomocou vstavanej funkcie do tabuľky „audit“ a vráti tento výsledok programu TRIGGER.

Je čas vygenerovať SPÚŠŤAČ pomocou príkazu CREATE TRIGGER. Vytvoríme spúšťač s názvom „emp_trig“ v tabuľke „zamestnať“. Klauzula AFTER INSERT ON znamená, že tento spúšťač bude fungovať až po vykonaní príkazu vloženia. FOR EACH ROW znamená pri vykonaní každého príkazu INSERT, tento spúšťač vyvolá a vykoná procedúru „auditlogfunc ()“ vytvorenú tesne pred.

>> CREATE TRIGGER emp_trig PO VLOŽENÍ NA ZAMESTNANÍ PRE KAŽDÝ RIADOK VYKONAŤ POSTUP auditlogfunc ();

Je čas vložiť nejaké údaje do tabuľky „zamestnať“. Vykonajte nižšie uvedený príkaz INSERT v shelli.

>> VLOŽTE DO ZAMESTNANIA (ID, meno, vek, plat) HODNOTY ('1', 'Paul', '34', '60000');

Pozrite sa na tabuľku „zamestnať“. Dáta boli úspešne pridané pomocou príkazu INSERT.

Teraz nahliadnite do tabuľky „audit“. Môžete vidieť, že je aktualizovaný aj kvôli spúšťaču „emp_trig“ a auditlogfunc ().

SPUŠŤ NA príkaz UPDATE

Teraz sa pozrieme na príklad spúšťača používajúceho príkaz UPDATE ako spúšťaciu udalosť. Musíme znova vytvoriť nový postup s iným názvom „aktualizácia“, ako je uvedený na obrázku. Tento postup po vložení tiež vloží záznamy do tabuľky „auditu“.

Teraz vytvorte nový spúšťač s názvom “update_emp” pomocou príkazu CREATE TRIGGER. Toto bude fungovať až po vykonaní dotazu UPDATE na tabuľke Employee a bude sa volať postup „update“.

Aktualizujte tabuľku „zamestnať“ nastavením jej ID na „2“.

Načítajte záznamy z tabuľky „použiť“, aby ste videli zmeny, ako je uvedené nižšie.

Ako môžete vidieť v tabuľke „audit“, pri aktualizácii tabuľky „zamestnať“ došlo k jej reorganizácii.

SPUŠŤ NA príkaz DELETE

Otvorte pgAdmin 4 z aplikácií, aby ste mohli pracovať na GUI PostgreSQL. V schéme „test“ nájdete zoznam tabuliek. Vytvorte novú tabuľku „emp“ a rovnakú tabuľku „audit“.

Tentokrát vyvoláme príkaz trigger príkazom DELETE. Nižšie je uvedená tabuľka „emp“ s niektorými záznamami.

Tu je tabuľka auditu s predchádzajúcimi dvoma aktualizáciami.

Vytvorte postup s názvom „Del ()“ na spustenie vloženia do tabuľky „audit“ po odstránení záznamov z tabuľky „emp“.

Vytvorte spúšťač „del_trig“ pomocou dotazu CREATE TRIGGER. Tento spúšťač vykoná procedúru „Del“, keď sa v tabuľke „emp“ vykoná nejaká klauzula DELETE.

Vymažme záznam z tabuľky „emp“, kde je „id“ zamestnanca „5“. Vymaže jeden riadok z tabuľky „emp“.

Načítajte záznamy z tabuľky „emp“ a pozrite sa na ňu. Môžete si všimnúť, že riadok bol odstránený, kde „id“ bolo „5“.

Teraz extrahujte záznamy tabuľky „audit“ a všimnete si, že bola aktualizovaná, pretože operácia DELETE bola vykonaná v tabuľke „emp“.

Záver:

Urobili sme takmer každý nevyhnutný príklad, aby sme pochopili koncept TRIGGERU pri vykonávaní operácií INSERT, UPDATE a DELETE.

Pridajte gestá myši do systému Windows 10 pomocou týchto bezplatných nástrojov
V posledných rokoch sa počítače a operačné systémy veľmi vyvinuli. Boli časy, keď používatelia museli prechádzať správcami súborov pomocou príkazov. R...
Ovládajte a spravujte pohyb myši medzi viacerými monitormi v systéme Windows 10
Správca myši s duálnym displejom umožňuje ovládať a konfigurovať pohyb myši medzi viacerými monitormi spomalením jeho pohybu blízko hranice. Windows 1...
WinMouse vám umožňuje prispôsobiť a vylepšiť pohyb ukazovateľa myši na počítači so systémom Windows
Ak chcete vylepšiť predvolené funkcie kurzora myši, použite freeware WinMouse. Pridáva ďalšie funkcie, ktoré vám pomôžu vyťažiť zo svojej skromnej myš...