PostgreSQL-i päästik: Loo, viska näide

Lang L: none (table-of-contents):

Anonim

Mis on Postgresqli päästikud?

PostgreSQL-i päästik on funktsioon, mis käivitatakse automaatselt, kui andmebaasi objektil toimub andmebaasi sündmus. Näiteks laud.

Päästiku aktiveerimise andmebaasisündmuste näited hõlmavad INSERT, UPDATE, DELETE jne. Veelgi enam, kui loote tabeli jaoks päästiku, siis käivitatakse see tabel kustutamisel automaatselt.

Selles PostgreSQL-i õpetuses saate teada järgmist:

  • Mis on Postgresqli päästikud?
  • Kuidas päästikut POSRGREQL-is kasutada?
  • Trigeri loomine
  • PgAdmini kasutamine
  • Käivitajate kukutamine

Kuidas päästikut POSRGREQL-is kasutada?

Päästiku saab selle loomise ajal tähistada operaatoriga FOR EACH ROW. Sellist päästikut kutsutakse üks kord iga reaga, mida toiming muudab. Päästiku saab selle loomise ajal tähistada ka operaatoriga FOR EACH STATEMENT. See päästik käivitatakse konkreetse toimingu jaoks ainult üks kord.

Trigeri loomine

Päästiku loomiseks kasutame funktsiooni CREATE TRIGGER. Siin on funktsiooni süntaks:

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

Triger-nimi on päästiku nimi.

BEFORE, AFTER ja INSTEAD OF on märksõnad, mis määravad, millal päästikule käivitatakse.

Sündmuse nimi on sündmuse nimi, mis põhjustab päästiku käivitamise. See võib olla INSERT, UPDATE, DELETE jne.

Tabeli nimi on selle tabeli nimi, millele päästik tuleb luua.

Kui INSERT-toimingu jaoks tuleb luua päästik, peame lisama parameetri ON veeru nimi.

Järgmine süntaks näitab seda:

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

Näiteks:

Kasutame allpool toodud tabelit Hinnad:

Hind:

Loogem veel üks tabel Price_Audits, kuhu logime hinna tabelisse tehtud muudatused:

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

Nüüd saame määratleda uue funktsiooni nimega 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;

Ülaltoodud funktsioon lisab tabelisse Price_Audits kirje, mis sisaldab uut rea ID-d ja kirje loomise aega.

Nüüd, kui meil on päästikfunktsioon, peaksime selle siduma oma tabeliga Hind. Anname päästikule nime price_trigger. Enne uue kirje loomist käivitatakse muudatuste logimiseks automaatselt päästikfunktsioon. Siin on päästik:

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

Lisagem tabelisse Hind uus kirje:

INSERT INTO PriceVALUES (3, 400);

Nüüd, kui oleme tabelisse Hind lisanud kirje, tuleks tabelisse Hind_Audit lisada ka kirje. See tuleneb päästikust, mille oleme loonud tabelis Hind. Kontrollime seda:

SELECT * FROM Price_Audits;

See annab järgmise tulemuse:

Päästik töötas edukalt.

Loendi käivitamised

Kõik PostgreSQL-is loodud päästikud salvestatakse tabelisse pg_trigger. Andmebaasis olevate päästikute loendi kuvamiseks pärige tabelist käsku SELECT, nagu allpool näidatud:

SELECT tgname FROM pg_trigger;

See tagastab järgmise:

Tabeli pg_trigger veerg tgname tähistab päästiku nime.

Käivitajate kukutamine

PostgreSQL-i päästiku viskamiseks kasutame lauset DROP TRIGGER järgmise süntaksiga:

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

Parameeter päästiku nimi tähistab kustutatava päästiku nime.

Tabeli nimi tähistab selle tabeli nime, kust päästik kustutatakse.

Klausel IF EXISTS üritab olemasolevat päästikut kustutada. Kui proovite kustutada päästiku, mida pole olemas, ilma et kasutaks klauslit IF OLEMAS, kuvatakse tõrge.

Suvand CASCADE aitab teil kõik päästikust sõltuvad objektid automaatselt maha visata.

Kui kasutate suvandit PIIRA, siis päästikut ei kustutata, kui objektid sellest sõltuvad.

Näiteks:

Trigeri nimega example_trigger kustutamiseks tabelis Price käivitame järgmise käsu:

Trigeri nimega example_trigger tabelile Ettevõte kukutamiseks käivitage järgmine käsk:

DROP TRIGGER example_trigger IF EXISTSON Company;

PgAdmini kasutamine

Nüüd vaatame, kuidas kõik kolm toimingut pgAdmini abil toimisid.

Käivitajate loomine

Sama saavutamiseks pgAdmini kaudu tehke seda:

Samm 1) Logige sisse oma pgAdmini kontole.

2. samm)

  1. Vasakul navigeerimisribal klõpsake käsku Andmebaasid.
  2. Klõpsake valikul Demo.

3. samm . Tabeli Price_Audits loomiseks tippige päringiredaktor:

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

Samm 4) Klõpsake nuppu Execute.

Samm 5) Funktsiooni auditfunc määratlemiseks käivitage järgmine kood:

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

6. samm. Käivita hinna käivitaja loomiseks käivitage järgmine kood:

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

7. samm)

  1. Uue kirje tabelisse Hind lisamiseks käivitage järgmine käsk:
    INSERT INTO PriceVALUES (3, 400)
  2. Käivitage järgmine käsk, et kontrollida, kas tabelis Price_Audits on kirje sisestatud:
    SELECT * FROM Price_Audits

    See peaks tagastama järgmise:

8. samm. Kontrollime tabeli Price_Audits sisu:

Loendi käivitamised

1. samm. Käivitage järgmine käsk andmebaasi päästikute kontrollimiseks:

SELECT tgname FROM pg_trigger

See tagastab järgmise:

Käivitajate kukutamine

Trigeri nimega example_trigger tabelile Ettevõte kukutamiseks käivitage järgmine käsk:

DROP TRIGGER example_trigger IF EXISTSON Company

Kokkuvõte:

  • PostgreSQL-i päästik viitab funktsioonile, mis käivitatakse automaatselt, kui andmebaasi objektil, näiteks tabelis, toimub andmebaasi sündmus.
  • Selliste andmebaasisündmuste näited hõlmavad INSERT, UPDATE, DELETE jne.
  • Päästik eksisteerib ainult selle andmebaasi objekti eluea jooksul, mille jaoks see loodi.
  • Kui andmebaasiobjekt kustutatakse, kustutatakse ka päästik.
  • PostgreSQL-i päästikud luuakse käsu CREATE TRIGGER abil.
  • Iga päästik on seotud funktsiooniga, mis näitab, mida päästik selle käivitamisel teeb.

Laadige alla selles õpetuses kasutatud andmebaas