PostgreSQL Triggerit: Luo, luettele ja pudota esimerkin avulla

Mitรค Trigger sisรคltรครค PostgreSQL?

A PostgreSQL Laukaista on toiminto, joka kรคynnistyy automaattisesti, kun tietokantatapahtuma tapahtuu tietokantaobjektissa. Esimerkiksi pรถytรค. Esimerkkejรค tietokantatapahtumista, jotka voivat aktivoida triggerin, ovat INSERT, UPDATE, DELETE jne. Lisรคksi, kun luot liipaisimen taulukolle, liipaisin pudotetaan automaattisesti, kun kyseinen taulukko poistetaan.

Kuinka Triggeriรค kรคytetรครคn PostgreSQL?

Triggeri voidaan merkitรค FOR EACH ROW -operaattorilla sen luomisen aikana. Tรคllaista liipaisinta kutsutaan kerran jokaiselle toiminnon muokkaamalle riville. Triggeri voidaan myรถs merkitรค FOR EACH STATEMENT -operaattorilla sen luonnin aikana. Tรคmรค liipaisin suoritetaan vain kerran tietylle toiminnolle.

PostgreSQL Luo triggeri

Liipaisimen luomiseen kรคytรคmme CREATE TRIGGER -toimintoa. Tรคssรค on funktion syntaksi:

CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name  
ON table-name  
[  
 -- Trigger logic  
];

Trigger-nimi on liipaisimen nimi.

ENNEN, AFTER ja INSTEEAD OF ovat avainsanoja, jotka mรครคrittรคvรคt, milloin laukaisinta vedetรครคn.

Tapahtuman nimi on sen tapahtuman nimi, joka laukaisee liipaisimen. Tรคmรค voi olla INSERT, Pร„IVITYS, POISTA jne.

Taulukon nimi on sen taulukon nimi, johon liipaisin luodaan.

Jos liipaisin on tarkoitus luoda INSERT-operaatiolle, meidรคn on lisรคttรคvรค parametri ON sarakkeen nimi.

Seuraava syntaksi osoittaa tรคmรคn:

CREATE TRIGGER trigger-name AFTER INSERT ON column-name  
ON table-name  
[  
 -- Trigger logic
];

PostgreSQL Luo laukaisuesimerkki

Kรคytรคmme alla olevaa hintataulukkoa:

Hinta:

PostgreSQL Luo triggeri

Luodaan toinen 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$
   BEGIN
      INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;
$my_table$ LANGUAGE plpgsql;

Yllรค oleva toiminto lisรครค taulukkoon Price_Audits tietueen, joka sisรคltรครค uuden rivitunnuksen ja tietueen luomisajan.

Nyt kun meillรค on laukaisutoiminto, meidรคn pitรคisi sitoa se hintataulukkoomme. Annamme triggerille nimen price_trigger. Ennen kuin uusi tietue luodaan, laukaisutoiminto kutsutaan automaattisesti kirjaamaan muutokset. Tรคssรค on laukaisin:

CREATE TRIGGER price_trigger AFTER INSERT ON Price
FOR EACH ROW EXECUTE PROCEDURE auditfunc();

Lisรคtรครคn uusi tietue Hintataulukkoon:

INSERT INTO Price 
VALUES (3, 400);

Nyt kun olemme lisรคnneet tietueen Hintataulukkoon, tietue tulisi lisรคtรค myรถs Price_Audit-taulukkoon. Tรคmรค johtuu laukaisusta, jonka olemme luoneet Hintataulukkoon. Tarkistakaamme tรคmรค:

SELECT * FROM Price_Audits;

Tรคmรค palauttaa seuraavat tiedot:

PostgreSQL Luo triggeri

Liipaisin toimi onnistuneesti.

Postgres List Trigger

Kaikki luomasi triggerit PostgreSQL tallennetaan pg_trigger-taulukkoon. Nรคhdรคksesi luettelon kรคynnistimistรค, jotka sinulla on tietokanta, tee kysely taulukosta suorittamalla SELECT-komento alla olevan kuvan mukaisesti:

SELECT tgname FROM pg_trigger;

Tรคmรค palauttaa seuraavan:

Postgres List Trigger

Pg_trigger-taulukon tgname-sarake ilmaisee triggerin nimen.

Postgres Drop Trigger

Pudottaaksesi a PostgreSQL trigger, kรคytรคmme DROP TRIGGER -lausetta seuraavalla syntaksilla:

DROP TRIGGER [IF EXISTS] trigger-name 
ON table-name [ CASCADE | RESTRICT ];

Trigger-name-parametri ilmaisee poistettavan triggerin nimen.

Taulukon nimi tarkoittaa sen taulukon nimeรค, josta laukaisin poistetaan.

IF EXISTS -lause yrittรครค poistaa olemassa olevan laukaisimen. Jos yritรคt poistaa liipaisimen, jota ei ole olemassa, kรคyttรคmรคttรค IF EXISTS -lausetta, saat virheilmoituksen.

CASCADE-vaihtoehto auttaa sinua pudottamaan kaikki laukaisimesta riippuvat objektit automaattisesti.

Jos kรคytรคt RESTRICT-vaihtoehtoa, laukaisinta ei poisteta, jos objektit ovat riippuvaisia โ€‹โ€‹siitรค.

Esimerkiksi:

Voit poistaa triggerin nimeltรค example_trigger taulukosta Price suorittamalla seuraavan komennon:

Jos haluat pudottaa triggerin nimeltรค example_trigger taulukkoon Yritys, suorita seuraava komento:

DROP TRIGGER example_trigger IF EXISTS
ON Company;

pgAdminin avulla

Katsotaan nyt, kuinka kaikki kolme toimintoa suoritettiin pgAdminilla.

Kuinka luoda triggeri sisรครคn PostgreSQL pgAdminin avulla

Nรคin voit luoda triggerin Postgresissa pgAdminin avulla:

Vaihe 1) Kirjaudu pgAdmin-tilillesi

Avaa pgAdmin ja kirjaudu sisรครคn tilillesi tunnuksillasi

Vaihe 2) Luo esittelytietokanta

  1. Valitse vasemmalla olevasta navigointipalkista Tietokannat.
  2. Napsauta Demo.

Luo triggeri sisรครคn PostgreSQL pgAdminin avulla

Vaihe 3) Kirjoita kysely

Luo taulukko Price_Audits kirjoittamalla kysely editoriin:

CREATE TABLE Price_Audits (
   book_id INT NOT NULL,
    entry_date text NOT NULL
)

Vaihe 4) Suorita kysely

Napsauta Suorita-painiketta

Luo triggeri sisรครคn PostgreSQL pgAdminin avulla

Vaihe 5) Suorita auditfunc-koodi

Suorita seuraava koodi mรครคrittรครคksesi auditfunc-funktion:

CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$
   BEGIN
      INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;
$my_table$ LANGUAGE plpgsql

Vaihe 6) Suorita koodi liipaisimen luomiseksi

Suorita seuraava koodi luodaksesi triggerin price_trigger:

CREATE TRIGGER price_trigger AFTER INSERT ON Price
FOR EACH ROW EXECUTE PROCEDURE auditfunc()

Vaihe 7) Lisรครค uusi tietue

  1. Suorita seuraava komento lisรคtรคksesi uuden tietueen Hintataulukkoon:
    INSERT INTO Price
    VALUES (3, 400)
  2. Suorita seuraava komento tarkistaaksesi, onko tietue lisรคtty Price_Audits -taulukkoon:
    SELECT * FROM Price_Audits

    Tรคmรคn pitรคisi palauttaa seuraavat tiedot:

Luo triggeri sisรครคn PostgreSQL pgAdminin avulla

Vaihe 8) Tarkista taulukon sisรคltรถ

Tarkastetaan Price_Audits -taulukon sisรคltรถ:

Triggerien luettelointi pgAdminilla

Vaihe 1) Suorita seuraava komento tarkistaaksesi tietokannan triggerit:

SELECT tgname FROM pg_trigger

Tรคmรค palauttaa seuraavan:

Triggerien luettelointi pgAdminilla

Triggerien pudottaminen pgAdminilla

Jos haluat pudottaa triggerin nimeltรค example_trigger taulukkoon Yritys, suorita seuraava komento:

DROP TRIGGER example_trigger IF EXISTS
ON Company

Yhteenveto

  • A PostgreSQL trigger viittaa toimintoon, joka kรคynnistyy automaattisesti, kun tietokantatapahtuma tapahtuu tietokantaobjektissa, kuten taulukossa.
  • Esimerkkejรค tรคllaisista tietokantatapahtumista ovat INSERT, UPDATE, DELETE jne.
  • Liipaisin on olemassa vain sen tietokantaobjektin elinkaaren aikana, jolle se luotiin.
  • Jos tietokantaobjekti poistetaan, myรถs triggeri poistetaan.
  • PostgreSQL triggerit luodaan CREATE TRIGGER -kรคskyn avulla.
  • Jokainen liipaisin liittyy toimintoon, joka ilmoittaa, mitรค liipaisin tekee, kun sitรค kutsutaan.

Lataa tรคssรค opetusohjelmassa kรคytetty tietokanta

Tiivistรค tรคmรค viesti seuraavasti: