Mitä ovat Postgresql-laukaisimet?
PostgreSQL-liipaisin on toiminto, joka laukaistaan automaattisesti, kun tietokantatapahtuma tapahtuu tietokantaobjektissa. Esimerkiksi taulukko.
Esimerkkejä tietokantatapahtumista, jotka voivat aktivoida liipaisimen, ovat INSERT, UPDATE, DELETE jne. Lisäksi, kun luot liipaisimen taululle, liipaisin pudotetaan automaattisesti, kun kyseinen taulukko poistetaan.
Tässä PostgreSQL-opetusohjelmassa opit seuraavat:
- Mitä ovat Postgresql-laukaisimet?
- Kuinka laukaisinta käytettiin POSRGREQL: ssä?
- Liipaisimen luominen
- PgAdminin käyttäminen
- Laukaisijoiden pudottaminen
Kuinka laukaisinta käytettiin POSRGREQL: ssä?
Liipaisin voidaan merkitä FOR EACH ROW -operaattorilla sen luomisen aikana. Tällainen liipaisin kutsutaan kerran jokaiselle toiminnon muokkaamalle riville. Liipaisin voidaan myös merkitä FOR EACH STATEMENT -operaattorilla sen luomisen aikana. Tämä liipaisin suoritetaan vain kerran tietylle toiminnolle.
Liipaisimen luominen
Luodaksemme liipaisun käytämme CREATE TRIGGER -toimintoa. Tässä on funktion syntaksi:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-nameON table-name[-- Trigger logic];
Liipaisimen nimi on liipaisimen nimi.
BEFORE, AFTER ja INSTEAD OF ovat avainsanoja, jotka määrittävät, milloin liipaisinta käytetään.
Tapahtuman nimi on tapahtuman nimi, joka aiheuttaa laukaisimen käynnistämisen. Tämä voi olla INSERT, UPDATE, DELETE jne.
Taulukon nimi on sen taulukon nimi, jolle liipaisin on luotava.
Jos liipaisin on tarkoitus luoda INSERT-toiminnolle, meidän on lisättävä ON-sarakkeen nimi -parametri.
Seuraava syntakse osoittaa tämän:
CREATE TRIGGER trigger-name AFTER INSERT ON column-nameON table-name[-- Trigger logic];
Esimerkiksi:
Käytämme alla olevaa hintataulukkoa:
Hinta:
Luodaan uusi taulukko, Price_Audits, johon kirjaamme hintataulukkoon tehdyt muutokset:
CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL);
Voimme nyt määrittää uuden funktion nimeltä 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;
Yllä oleva toiminto lisää tietueen taulukkoon Price_Audits, joka sisältää uuden rivin tunnuksen ja tietueen luomisen ajan.
Nyt kun meillä on liipaisutoiminto, meidän tulisi sitoa se hintataulukkoon. Annamme laukaisimelle nimen price_trigger. Ennen uuden tietueen luomista käynnistystoiminto käynnistetään automaattisesti muutosten kirjaamiseksi. Tässä on liipaisin:
CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc();
Lisätään uusi tietue hintataulukkoon:
INSERT INTO PriceVALUES (3, 400);
Nyt kun olemme lisänneet tietueen hintataulukkoon, tietue tulisi lisätä myös Price_Audit-taulukkoon. Tämä johtuu liipaisimesta, jonka olemme luoneet hintataulukkoon. Tarkistetaan tämä:
SELECT * FROM Price_Audits;
Tämä palauttaa seuraavat:
Liipaisin toimi onnistuneesti.
Luettelon laukaisijat
Kaikki PostgreSQL: ssä luomasi laukaisimet tallennetaan pg_trigger-taulukkoon. Jos haluat nähdä luettelon käynnistimistä, jotka sinulla on tietokannassa, kysy taulukosta suorittamalla SELECT-komento alla olevan kuvan mukaisesti:
SELECT tgname FROM pg_trigger;
Tämä palauttaa seuraavan:
Pg_trigger-taulukon tgname-sarake tarkoittaa liipaisimen nimeä.
Pudotus laukaisee
PostgreSQL-liipaisimen pudottamiseksi käytämme DROP TRIGGER -käskyä seuraavalla syntaksilla:
DROP TRIGGER [IF EXISTS] trigger-nameON table-name [ CASCADE | RESTRICT ];
Trigger-name-parametri tarkoittaa poistettavan liipaisimen nimeä.
Taulukon nimi tarkoittaa taulukon nimeä, josta liipaisin on tarkoitus poistaa.
IF EXISTS -lauseke yrittää poistaa olemassa olevan laukaisimen. Jos yrität poistaa käynnistimen, jota ei ole olemassa, käyttämättä IF EXISTS -lauseketta, saat virheilmoituksen.
CASCADE-vaihtoehto auttaa pudottamaan kaikki liipaisimesta riippuvat objektit automaattisesti.
Jos käytät RESTRICT-vaihtoehtoa, liipaisinta ei poisteta, jos objektit riippuvat siitä.
Esimerkiksi:
Poista taulukon Price laukaisija nimeltä example_trigger suorittamalla seuraava komento:
Voit pudottaa triggerin nimeltä example_trigger taulukkoon Company suorittamalla seuraavan komennon:
DROP TRIGGER example_trigger IF EXISTSON Company;
PgAdminin käyttäminen
Katsotaan nyt, kuinka kaikki kolme toimintoa suoritettiin pgAdminin avulla.
Triggerien luominen
Voit tehdä saman pgAdminin avulla seuraavasti:
Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.
Vaihe 2)
- Valitse vasemmalla olevasta siirtymispalkista Tietokannat.
- Napsauta Demo.
Vaihe 3) Luo taulukko Price_Audits kirjoittamalla kyselyeditori:
CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL)
Vaihe 4) Napsauta Suorita-painiketta.
Vaihe 5) Määritä funktio auditfunc suorittamalla seuraava koodi:
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
Vaihe 6) Luo liipaisin price_trigger suorittamalla seuraava koodi:
CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc()
Vaihe 7)
- Suorita seuraava komento lisätäksesi uuden tietueen hintataulukkoon:
INSERT INTO PriceVALUES (3, 400)
- Suorita seuraava komento tarkistaaksesi, onko tietue lisätty Price_Audits-taulukkoon:
SELECT * FROM Price_Audits
Tämän pitäisi palauttaa seuraava:
Vaihe 8) Tarkistetaan Price_Audits-taulukon sisältö:
Luettelon laukaisijat
Vaihe 1) Suorita seuraava komento tarkistaaksesi tietokannan laukaisimet:
SELECT tgname FROM pg_trigger
Tämä palauttaa seuraavan:
Laukaisijoiden pudottaminen
Voit pudottaa triggerin nimeltä example_trigger taulukkoon Company suorittamalla seuraavan komennon:
DROP TRIGGER example_trigger IF EXISTSON Company
Yhteenveto:
- PostgreSQL-liipaisin viittaa toimintoon, joka laukaistaan automaattisesti, kun tietokantatapahtuma tapahtuu tietokantaobjektissa, kuten taulukossa.
- Esimerkkejä tällaisista tietokantatapahtumista ovat INSERT, UPDATE, DELETE jne.
- Käynnistin on olemassa vain sen tietokantaobjektin elinaikana, jolle se luotiin.
- Jos tietokantaobjekti poistetaan, myös liipaisin poistetaan.
- PostgreSQL-laukaisimet luodaan CREATE TRIGGER -käskyllä.
- Jokainen liipaisin liittyy toimintoon, joka ilmoittaa, mitä liipaisin tekee, kun sitä käytetään.
Lataa tässä opetusohjelmassa käytetty tietokanta