Čo sú spúšťače Postgresql?
Spúšťač PostgreSQL je funkcia, ktorá sa spustí automaticky, keď nastane databázová udalosť na databázovom objekte. Napríklad stôl.
Príklady udalostí databázy, ktoré môžu aktivovať spúšťač, zahŕňajú INSERT, UPDATE, DELETE atď. Navyše, keď vytvoríte spúšťač pre tabuľku, spúšťač sa automaticky zruší, keď sa táto tabuľka odstráni.
V tomto výučbe PostgreSQL sa dozviete toto:
- Čo sú spúšťače Postgresql?
- Ako sa použil spúšťač v POSRGREQL?
- Vytvorenie spúšťača
- Pomocou pgAdmin
- Spustenie spúšťačov
Ako sa použil spúšťač v POSRGREQL?
Spúšťač je možné pri jeho vytváraní označiť operátorom FOR EACH ROW. Takýto spúšťač sa vyvolá raz pre každý riadok upravený operáciou. Spúšťač je možné pri jeho vytváraní označiť aj operátorom FOR EACH STATEMENT. Tento spúšťač sa vykoná iba raz pre konkrétnu operáciu.
Vytvorenie spúšťača
Na vytvorenie spúšťača používame funkciu CREATE TRIGGER. Tu je syntax funkcie:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-nameON table-name[-- Trigger logic];
Názov spúšťača je názov spúšťača.
BEFORE, AFTER a INSTEAD OF sú kľúčové slová, ktoré určujú, kedy bude vyvolaný spúšťač.
Názov udalosti je názov udalosti, ktorá spôsobí vyvolanie spúšťača. Môže to byť INSERT, UPDATE, DELETE atď.
Názov-tabuľky je názov tabuľky, v ktorej sa má vytvoriť spúšťač.
Ak sa má vytvoriť spúšťač pre operáciu INSERT, musíme pridať parameter ON column-name.
Nasledujúca syntax to dokazuje:
CREATE TRIGGER trigger-name AFTER INSERT ON column-nameON table-name[-- Trigger logic];
Napríklad:
Použijeme tabuľku cien uvedenú nižšie:
Cena:
Vytvorme ďalšiu tabuľku Price_Audits, kde zaznamenáme zmeny vykonané v tabuľke Price:
CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL);
Teraz môžeme definovať novú funkciu s názvom auditfunc:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$BEGININSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);RETURN NEW;END;$my_table$ LANGUAGE plpgsql;
Vyššie uvedená funkcia vloží záznam do tabuľky Price_Audits vrátane nového ID riadku a času vytvorenia záznamu.
Teraz, keď máme spúšťaciu funkciu, mali by sme ju spojiť s našou cenovou tabuľkou. Spúšťaču dáme názov price_trigger. Pred vytvorením nového záznamu sa automaticky vyvolá funkcia spúšťača, ktorá zaznamená zmeny. Tu je spúšťač:
CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc();
Vložte nový záznam do tabuľky cien:
INSERT INTO PriceVALUES (3, 400);
Teraz, keď sme vložili záznam do tabuľky cien, mal by sa záznam vložiť aj do tabuľky Price_Audit. Bude to výsledkom spúšťača, ktorý sme vytvorili v tabuľke cien. Poďme to skontrolovať:
SELECT * FROM Price_Audits;
Takto sa vráti toto:
Spúšťač fungoval úspešne.
Spúšťače záznamu
Všetky spúšťače, ktoré vytvoríte v PostgreSQL, sú uložené v tabuľke pg_trigger. Zoznam spúšťačov, ktoré máte v databáze, zobrazíte dotazovaním v tabuľke spustením príkazu SELECT, ako je uvedené nižšie:
SELECT tgname FROM pg_trigger;
Takto sa vráti toto:
Stĺpec tgname tabuľky pg_trigger označuje názov spúšťača.
Spustenie spúšťačov
Na odhodenie spúšťača PostgreSQL používame príkaz DROP TRIGGER s nasledujúcou syntaxou:
DROP TRIGGER [IF EXISTS] trigger-nameON table-name [ CASCADE | RESTRICT ];
Parameter trigger-name označuje názov spúšťača, ktorý sa má vymazať.
Názov tabuľky označuje názov tabuľky, z ktorej sa má vymazať spúšťač.
Klauzula IF EXISTS sa pokúša vymazať existujúci spúšťač. Ak sa pokúsite odstrániť spúšťač, ktorý neexistuje, bez použitia klauzuly IF EXISTS, zobrazí sa chyba.
Voľba CASCADE vám pomôže automaticky zrušiť všetky objekty, ktoré závisia od spúšťača.
Ak použijete voľbu RESTRICT, spúšťač sa neodstráni, ak na nej objekty závisia.
Napríklad:
Ak chcete vymazať spúšťač s názvom example_trigger z tabuľky Price, spustíme nasledujúci príkaz:
Ak chcete spustiť spúšťač s názvom example_trigger na stôl Spoločnosť, spustite nasledujúci príkaz:
DROP TRIGGER example_trigger IF EXISTSON Company;
Pomocou pgAdmin
Teraz sa pozrime, ako sa všetky tri akcie vykonali pomocou pgAdmin.
Vytváranie spúšťačov
To isté dosiahnete prostredníctvom pgAdmin:
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Ak chcete vytvoriť tabuľku Price_Audits, zadajte editor dotazov:
CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL)
Krok 4) Kliknite na tlačidlo Vykonať.
Krok 5) Spustením nasledujúceho kódu definujte funkciu auditfunc:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$BEGININSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);RETURN NEW;END;$my_table$ LANGUAGE plpgsql
Krok 6) Spustením nasledujúceho kódu vytvorte spúšťač price_trigger:
CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc()
Krok 7)
- Spustením nasledujúceho príkazu vložte nový záznam do tabuľky cien:
INSERT INTO PriceVALUES (3, 400)
- Spustením nasledujúceho príkazu skontrolujte, či bol záznam vložený do tabuľky Price_Audits:
SELECT * FROM Price_Audits
Mali by ste vrátiť nasledovné:
Krok 8) Poďme skontrolovať obsah tabuľky Price_Audits:
Spúšťače záznamu
Krok 1) Spustením nasledujúceho príkazu skontrolujte spúšťače v databáze:
SELECT tgname FROM pg_trigger
Takto sa vráti toto:
Spustenie spúšťačov
Ak chcete spustiť spúšťač s názvom example_trigger na stôl Spoločnosť, spustite nasledujúci príkaz:
DROP TRIGGER example_trigger IF EXISTSON Company
Zhrnutie:
- Spúšťač PostgreSQL označuje funkciu, ktorá sa spustí automaticky, keď nastane databázová udalosť na databázovom objekte, napríklad v tabuľke.
- Medzi príklady takýchto databázových udalostí patria INSERT, UPDATE, DELETE atď.
- Spúšťač existuje iba počas životnosti databázového objektu, pre ktorý bol vytvorený.
- Ak sa databázový objekt vymaže, vymaže sa aj spúšťač.
- Spúšťače PostgreSQL sa vytvárajú pomocou príkazu CREATE TRIGGER.
- Každý spúšťač je priradený k funkcii určujúcej, čo bude spúšťač robiť, keď je vyvolaný.
Stiahnite si databázu použitú v tomto výučbe