CREATETRIGGER

name

Nimi, joka annetaan uudelle triggerille. Tämän nimen on oltava erilainen kuin saman taulukon minkä tahansa muun triggerin nimi. Nimi ei voi olla skeemamääritelty – laukaisin perii taulunsa skeeman. Rajoitustriggerille tämä on myös nimi, jota käytetään muutettaessa triggerin käyttäytymistä SET CONSTRAINTS -ohjelmalla.

BEFORE
AFTER
INSTEAD OF

Määrittää, kutsutaanko funktiota ennen tapahtumaa, sen jälkeen vai sen sijaan. Rajoitusten laukaisu voidaan määrittää vain AFTER.

event

Jokainen seuraavista: INSERT, UPDATE, DELETE tai TRUNCATE; tämä määrittää tapahtuman, joka laukaisee laukaisun. Useita tapahtumia voidaan määrittää käyttämällä OR.

UPDATE-tapahtumia varten on mahdollista määrittää sarakeluettelo käyttämällä tätä syntaksia:

UPDATE OF column_name1 

Liipaisin laukeaa vain, jos vähintään yksi luetelluista sarakkeista mainitaan UPDATE-komennon kohteena.

INSTEAD OF UPDATE -tapahtumat eivät tue sarakeluetteloita.

table

Taulukon tai näkymän nimi (valinnaisesti skema-pätevöity), jolle liipaisu on tarkoitettu.

referenced_table_name

Taulukon tai näkymän (valinnaisesti skema-pätevöity) nimi (mahdollisesti skema-pätevöity) toisesta taulukosta, johon rajoitus viittaa. Tätä vaihtoehtoa käytetään vierasavainrajoituksia varten, eikä sitä suositella käytettäväksi yleisesti. Tämä voidaan määrittää vain constraint-triggereille.

DEFERRABLE
NOT DEFERRABLE
INITIALLY IMMEDIATE
INITIALLY DEFERRED

Triggerin oletusajoitus. Lisätietoja näistä rajoitusvaihtoehdoista on CREATE TABLE -dokumentaatiossa. Tämä voidaan määrittää vain constraint-triggereille.

FOR EACH ROW
FOR EACH STATEMENT

Tämä määrittää, laukaistaanko liipaisuprosessi kerran jokaiselle riville, johon liipaisutapahtuma vaikuttaa, vai vain kerran SQL-lausetta kohden. Jos kumpaakaan ei ole määritetty, FOR EACH STATEMENT on oletusarvo. Constraint-triggerit voidaan määrittää vain FOR EACH ROW.

condition

Boolen lauseke, joka määrittää, suoritetaanko trigger-funktio todella. Jos WHEN on määritetty, funktiota kutsutaan vain, jos ehto palauttaa arvon true. FOR EACH ROW -triggereissä WHEN-ehto voi viitata vanhan ja/tai uuden rivin arvojen sarakkeisiin kirjoittamalla vastaavasti OLD.column_name tai NEW.column_name. INSERT-triggerit eivät tietenkään voi viitata OLD:hen eivätkä DELETE-triggerit NEW:hen.

INSTEAD OF-triggerit eivät tue WHEN-ehtoja.

Tällä hetkellä WHEN-lausekkeet eivät voi sisältää alikyselyjä.

Huomaa, että constraint-triggereissä WHEN-ehdon arviointia ei lykätä, vaan se tapahtuu heti rivin päivitysoperaation suorittamisen jälkeen. Jos ehto ei evaluoidu todeksi, liipaisinta ei aseteta jonoon lykättyä suoritusta varten.

function_name

Käyttäjän antama funktio, joka ilmoitetaan siten, että se ei ota argumentteja ja palauttaa tyypin liipaisija, joka suoritetaan, kun liipaisija laukeaa.

arguments

Vapaaehtoinen pilkulla erotettu luettelo argumenteista, jotka annetaan funktiolle liipaisimen suorittamisen yhteydessä. Argumentit ovat kirjaimellisia merkkijonovakioita. Tähän voidaan kirjoittaa myös yksinkertaisia nimiä ja numeerisia vakioita, mutta ne kaikki muunnetaan merkkijonoiksi. Tarkista laukaisufunktion toteutuskielen kuvauksesta, miten näitä argumentteja voidaan käyttää funktiossa; se saattaa poiketa funktioiden normaaleista argumenteista.

Vastaa

Sähköpostiosoitettasi ei julkaista.