PostgreSQL CREATE TRIGGER

Yhteenveto: Tässä opetusohjelmassa opit käyttämään PostgreSQL:n CREATE TRIGGER-lauseketta liipaisimen luomiseen.

Luot uuden liipaisimen PostgreSQL:ssä noudattamalla seuraavia vaiheita:

  • Luo ensin liipaisinfunktio käyttäen CREATE FUNCTION-lauseketta.
  • Toiseksi sido laukaisufunktio taulukkoon käyttämällä CREATE TRIGGER-lauseketta.

Jos et ole perehtynyt käyttäjän määrittelemien funktioiden luomiseen, voit tutustua PL/pgSQL-osioon.

Luo laukaisufunktioiden syntaksi

Laukaisufunktio on samanlainen kuin tavallinen käyttäjän määrittelemä funktio. Laukaisufunktio ei kuitenkaan ota argumentteja ja sillä on paluuarvo, jonka tyyppi on trigger.

Seuraavassa havainnollistetaan laukaisufunktion luomisen syntaksia:

Code language: SQL (Structured Query Language) (sql)

Huomaa, että voit luoda laukaisufunktion millä tahansa PostgreSQL:n tukemalla kielellä. Tässä opetusohjelmassa käytämme PL/pgSQL:ää.

Liipaisufunktio saa tietoja kutsuvasta ympäristöstään erityisen rakenteen nimeltä TriggerData kautta, joka sisältää joukon paikallisia muuttujia.

Esimerkiksi OLD ja NEW edustavat taulukon rivin tiloja ennen tai jälkeen laukaisevan tapahtuman.

PostgreSQL tarjoaa myös muita paikallisia muuttujia, joita edeltää TG_, kuten TG_WHEN ja TG_TABLE_NAME.

Kun olet määrittänyt laukaisufunktion, voit sitoa sen yhteen tai useampaan laukaisutapahtumaan, kuten INSERT, UPDATE ja DELETE.

PostgreSQL:n CREATE TRIGGER -lauseen käyttöönotto DELETE

Tutustuminen PostgreSQL:n CREATE TRIGGER-lauseeseen

Lauseke CREATE TRIGGERluokkaa uudenlaisen liipaisun. Seuraavassa havainnollistetaan CREATE TRIGGER-lauseen perussyntaksi:

Code language: SQL (Structured Query Language) (sql)

Tässä syntaksissa:

Ensin määritetään liipaisimen nimi TRIGGER-avainsanojen jälkeen.

Toiseksi määritetään ajoitus, joka aiheuttaa liipaisimen laukeamisen. Se voi olla BEFORE tai AFTER tapahtuma tapahtuu.

Kolmanneksi, määritä tapahtuma, joka kutsuu laukaisimen. Tapahtuma voi olla INSERT , DELETE, UPDATE tai TRUNCATE.

Neljäs, määritä laukaisimeen liittyvän taulukon nimi avainsanan ON jälkeen.

Viidenneksi määritä laukaisimien tyyppi, joka voi olla:

  • Rivitason laukaisija, joka määritetään FOR EACH ROW-lausekkeella.
  • Statement-tason laukaisija, joka määritetään FOR EACH STATEMENT-lausekkeella.

Rivitason liipaisin laukeaa jokaiselle riville, kun taas lauseketason liipaisin laukeaa jokaiselle tapahtumalle.

Esitellään, että taulussa on 100 riviä ja kaksi liipaisinta, jotka laukeavat, kun DELETE-tapahtuma tapahtuu.

Jos lausekkeella DELETE poistetaan 100 riviä, rivitason liipaisin laukeaa sataan kertaan, kerran jokaiselle poistetulle riville. Sitä vastoin lauseketason triggeri laukeaa kerran riippumatta siitä, kuinka monta riviä poistetaan.

Määritä lopuksi triggerifunktion nimi EXECUTE PROCEDURE-avainsanojen jälkeen.

PostgreSQL CREATE TRIGGER esimerkki

Seuraavalla lausekkeella luodaan uusi taulukko nimeltä employees:

Code language: SQL (Structured Query Language) (sql)

Esitellään, että kun työntekijän nimi muuttuu, halutaan kirjata muutokset erilliseen taulukkoon nimeltä employee_audits :

Code language: SQL (Structured Query Language) (sql)

Luo ensin uusi funktio nimeltä log_last_name_changes:

Code language: SQL (Structured Query Language) (sql)

Funktio lisää vanhan sukunimen employee_audits-taulukkoon sisältäen työntekijän tunnuksen, sukunimen ja muutosajankohdan, jos työntekijän sukunimi muuttuu.

OLD edustaa ennen päivitystä olevaa riviä, kun taas NEW edustaa uutta päivitettävää riviä. OLD.last_name palauttaa sukunimen ennen päivitystä ja NEW.last_name palauttaa uuden sukunimen.

Sidotaan toiseksi laukaisufunktio employees-tauluun. Laukaisijan nimi on last_name_changes. Ennen kuin last_name-sarakkeen arvo päivitetään, laukaisufunktio kutsutaan automaattisesti kirjaamaan muutokset.

Code language: SQL (Structured Query Language) (sql)

Kolmanneksi lisätään joitakin rivejä employees-taulukkoon:

Code language: SQL (Structured Query Language) (sql)

Neljänneksi tutkitaan employees-taulukon sisältöä:

Code language: SQL (Structured Query Language) (sql)

Esitellään, että Lily Bush vaihtaa sukunimensä muotoon Lily Brown.

Viidenneksi päivitä Lilyn sukunimi uuteen:

Code language: SQL (Structured Query Language) (sql)

Seitsemänneksi tarkista, onko Lily:n sukunimi päivitetty:

Code language: SQL (Structured Query Language) (sql)

Kuten tulosteesta näkyy, Lilyn sukunimi on päivitetty.

Kahdeksanneksi tarkista employee_audits-taulun sisältö:

Code language: SQL (Structured Query Language) (sql)

Triggeri kirjautti muutoksen employee_audits-tauluun.

Tässä opetusohjelmassa olet oppinut käyttämään PostgreSQL CREATE TRIGGER:tä uuden liipaisimen luomiseen.

  • Oliko tästä opetusohjelmasta apua?
  • KylläEi

.

Vastaa

Sähköpostiosoitettasi ei julkaista.