PostgreSQL Triggers are database callback functions, which are automatically performed/invoked when a specified database event occurs.
seuraavat ovat tärkeitä kohtia PostgreSQL: n laukaisijoista −
-
PostgreSQL: n laukaisija voidaan määritellä ampumaan
ennen kuin toimintoa yritetään tehdä rivillä (ennen kuin rajoitukset tarkistetaan ja lisätään, päivitetään tai poistetaan yritetään)
operaation päätyttyä (kun rajoitukset on tarkistettu ja insertti, päivitys tai poisto on suoritettu)
jokaiselle riville merkittyä liipaisinta kutsutaan kerran jokaista riviä kohti, että operaatio muuntuu. Sitä vastoin jokaiselle lauseelle merkitty käynnistin suorittaa vain kerran minkä tahansa toiminnon aikana riippumatta siitä, kuinka monta riviä se muuttaa.
sekä WHEN-lauseke että käynnistystoiminnot voivat käyttää lisättävän, poistettavan tai päivitettävän rivin elementtejä käyttäen viittauksia uuteen lomakkeeseen.sarake-nimi ja vanha.sarakkeen nimi, jossa sarakkeen nimi on sen taulukon sarakkeen nimi, johon käynnistin liittyy.
Jos annetaan milloin-lauseke, annetut PostgreSQL-lausekkeet suoritetaan vain niille riveille, joille milloin-lauseke on tosi. Jos ei lauseketta annettaessa, PostgreSQL-lausekkeet suoritetaan kaikille riveille.
Jos samalle tapahtumalle on määritelty useita samantyyppisiä laukaisijoita, ne laukaistaan aakkosjärjestyksessä nimen mukaan.
hakusanan ennen, jälkeen tai sijasta määrittää, milloin käynnistystoimet suoritetaan suhteessa siihen liittyvän rivin lisäämiseen, muuttamiseen tai poistamiseen.
käynnistimet pudotetaan automaattisesti, kun taulukko, johon ne liittyvät, pudotetaan.
muokattavan taulukon on oltava samassa tietokannassa kuin sen taulukon tai näkymän, johon käynnistin on liitetty, ja on käytettävä vain tablenimeä, ei tietokantaa.pöytänimi.
määritettynä RAJOITEVALINTA luo rajoitealun. Tämä on sama kuin tavallinen liipaisin, paitsi että laukaisun ajoitusta voidaan säätää asetettujen rajoitusten avulla. Rajoitusten laukaisijoiden odotetaan nostavan poikkeuksen, kun niiden asettamia rajoituksia rikotaan.
syntaksi
käynnistimen luomisen perussyntaksi on seuraava −
CREATE TRIGGER trigger_name event_nameON table_name;
tässä event_name voidaan lisätä, poistaa, päivittää ja typistää tietokantaoperaatio mainitussa taulukossa table_name. Voit valinnaisesti määrittää kullekin riville taulukon nimen jälkeen.
seuraava on syntaksi, jolla luodaan päivitystoiminto yhdelle tai useammalle taulukon sarakkeelle seuraavasti −
CREATE TRIGGER trigger_name UPDATE OF column_nameON table_name;
esimerkki
harkitkaamme tapausta, jossa haluamme pitää auditointikokeilun jokaisesta YHTIÖTAULUKKOON lisätystä tietueesta, jonka luomme uudelleen seuraavasti (Drop COMPANY table, jos sinulla jo on se).
testdb=# CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);
pitääksemme auditointikokeilun, luomme uuden taulukon nimeltä AUDIT, jossa lokiviestit lisätään aina, kun YHTIÖTAULUKOSSA on merkintä uudelle tietueelle −
testdb=# CREATE TABLE AUDIT( EMP_ID INT NOT NULL, ENTRY_DATE TEXT NOT NULL);
tässä, ID on AUDITOINTITIETUEEN tunnus ja EMP_ID on ID, joka tulee YHTIÖTAULUKOSTA, ja DATE pitää aikaleiman, kun tietue luodaan yrityksen taulukossa. Joten nyt, luodaanpa laukaisija yrityksen pöydälle seuraavasti –
testdb=# CREATE TRIGGER example_trigger AFTER INSERT ON COMPANYFOR EACH ROW EXECUTE PROCEDURE auditlogfunc();
missä auditlogfunc() on PostgreSQL −menettely ja sillä on seuraava määritelmä –
CREATE OR REPLACE FUNCTION auditlogfunc() RETURNS TRIGGER AS $example_table$ BEGIN INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, current_timestamp); RETURN NEW; END;$example_table$ LANGUAGE plpgsql;
nyt aloitetaan varsinainen työ. Let us start upting record in COMPANY table which should result in creating an audit log record in AUDIT table. Luodaanpa siis yksi tietue YRITYSTAULUKKOON seuraavasti –
testdb=# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, 'Paul', 32, 'California', 20000.00 );
Tämä luo yhden tietueen YRITYSTAULUKKOON, joka on seuraava −
id | name | age | address | salary----+------+-----+--------------+-------- 1 | Paul | 32 | California | 20000
samalla syntyy yksi tietue TARKASTUSTAULUKKOON. Tämä ennätys on seurausta liipaisimesta, jonka olemme luoneet INSERT-operaatioon yhtiön pöydällä. Samoin, voit luoda käynnistimet UPDATE ja poistaa toimintoja perustuu tarpeisiisi.
emp_id | entry_date--------+------------------------------- 1 | 2013-05-05 15:49:59.968+05:30(1 row)
listaavat käynnistimet
voit luetella kaikki nykyisen tietokannan käynnistimet pg_trigger −taulukosta seuraavasti –
testdb=# SELECT * FROM pg_trigger;
yllä annettu PostgreSQL-lausunto listaa kaikki käynnistimet alas.
Jos haluat listata laukaisimet tiettyyn taulukkoon, Käytä ja lauseke taulukon nimellä seuraavasti −
testdb=# SELECT tgname FROM pg_trigger, pg_class WHERE tgrelid=pg_class.oid AND relname='company';
yllä annettu PostgreSQL −lausunto listaa myös alas vain yhden merkinnän seuraavasti −
tgname----------------- example_trigger(1 row)
pudottavat laukaisijat
seuraava on PUDOTUSKOMENTO, joka voi käytetään olemassa olevan laukaisimen pudottamiseen –
testdb=# DROP TRIGGER trigger_name;