Syntaks:
Følgende er den enkle syntaksen for å generere en utløser:
>> OPPRETT TRIGGER trigger_name [FØR | ETTER | INSTEAD OF] hendelsesnavn PÅ tabellnavn [---- Trigger Logic];Her er forklaringen på den generelle spørringen ovenfor.
- Utløsernavn: Navnet på en utløser
- FØR, ETTER, I STEDET FOR: Begreper som bestemmer når utløseren vil være aktiv
- Arrangementsnavn: Tittel på hendelsen som kan utløse utløseren (Dette kan være, enten fra INSERT eller UPDATE eller SLETT)
- Tabellnavn: Spesifiserer tabellen som utløseren skal bygges på
For å forstå utløserkonseptet kort, start PostgreSQL-skallet fra applikasjonene. Bytt server hvis du vil jobbe på en annen server, ellers trykk enter fra tastaturet. Legg til databasenavnet du vil jobbe med, ellers lar du det være og trykker på enter. Som du ser, har vi for tiden arbeidet med port 5432 som standard; du kan også endre det. Etter det, oppgi et annet brukernavn enn Postgres hvis du vil jobbe med en annen bruker, ellers la det være tomt og trykk enter-knappen. Nå er kommandoskallet klart til bruk.
TRIGGER Ved INSERT-kommando
La oss se på eksemplet på en trigger når INSERT-kommandoen har blitt brukt som en triggerhendelse. For dette må vi lage to nye tabeller, f.eks.g., “Ansette” og “revisjon”. Tabellen "ansette" vil inneholde de ansattes personlige poster fra et bestemt selskap, og tabellen "revisjon" vil inneholde informasjon om når de ansatte ble med i selskapet. Spørringene for å lage tabellene er gitt nedenfor.
>> OPPRETT TABELL ansette (ID INTEGER IKKE NULL HOVEDNØKE, Navn VARCHAR (100) IKKE NULL, Alder VARCHAR (100) IKKE NULL, Lønn VARCHAR (100) IKKE NULL);>> CREATE TABLE audit (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);
Du må lage en prosedyre som automatisk blir utført eller fungerer når utløseren blir ringt. Den vil bli brukt i neste CREATE TRIGGER-kommando. Fra kommandoen nedenfor kan du få en idé om at vi har opprettet en prosedyre "auditlogfunc ()", som vil returnere en utløser som variabel "$ examp_table $". Funksjonen begynner med BEGIN-setningen, etterfulgt av INSERT-setningen. Denne INSERT-setningen setter inn automatisk ID og gjeldende tidsdato ved hjelp av den innebygde funksjonen i "revisjon" -tabellen og returnerer dette resultatet til TRIGGER.
Det er på tide å generere en TRIGGER ved hjelp av CREATE TRIGGER-kommandoen. Vi oppretter en utløser kalt "emp_trig" på bordet "ansette". Klausulen ETTER INSERT PÅ betyr at denne utløseren bare vil fungere etter utførelsen av innsettingskommandoen. FOR HVER RAD betyr ved utførelse av hver INSERT-kommando, vil denne utløseren ringe og utføre “auditlogfunc ()” -prosedyren opprettet like før.
>> OPPRETT TRIGGER emp_trig ETTER INSERT PÅ ansett FOR HVER RADUTFØRINGSPROSEDYRE auditlogfunc ();
Det er på tide å sette inn noen data i tabellen "ansett". Utfør INSERT-kommandoen nedenfor i skallet.
>> INSERT INTO employ (ID, Name, Age, Salary) VALUES ('1', 'Paul', '34', '60000');
Ta en titt på tabellen "ansett". Dataene er lagt til med INSERT-kommandoen.
Nå får du et glimt av "revisjonstabellen". Du kan se, den er også oppdatert på grunn av utløser “emp_trig” og auditlogfunc ().
TRIGGER Upon UPDATE Command
Vi vil nå se på et eksempel på en trigger ved hjelp av UPDATE-kommandoen som en triggerhendelse. Vi må lage en ny prosedyre igjen med det forskjellige navnet "oppdatering" som vist i bildet. Denne prosedyren vil også sette inn poster i 'revisjonstabellen ved samtale.
Opprett nå en ny utløser kalt “update_emp” ved hjelp av CREATE TRIGGER-kommandoen. Dette vil bare fungere etter utførelsen av UPDATE-spørringen på bordet, og det vil kalle prosedyren "oppdatering".
Oppdater tabellen "ansett" ved å sette ID-en til "2".
Hent arkivene til en tabell som er "ansatt" for å se endringene som vedlagt nedenfor.
Som du kan se på tabellen "revisjon", har den blitt omorganisert etter hvert som tabellen "ansetter" ble oppdatert.
TRIGGER Ved SLETT kommando
Åpne pgAdmin 4 fra applikasjoner for å jobbe med GUI PostgreSQL. Under skjemaet “test” vil du oppdage en liste over tabeller. Lag en ny tabell "emp" og den samme "revisjon" -tabellen.
Denne gangen vil vi påkalle utløserkommandoen med SLETT-kommandoen. Nedenfor er tabellen "emp" med noen poster.
Her er tilsynstabellen med de to foregående oppdateringene.
Opprett en prosedyre med navnet "Del ()" for å utløse innsettingen i "revisjon" -tabellen når du sletter postene fra tabellen "emp".
Lag en utløser “del_trig” ved hjelp av CREATE TRIGGER-spørringen. Denne utløseren vil utføre prosedyren "Del" når noe DELETE-ledd vil bli utført på bordet "emp".
La oss slette en post fra tabellen "emp" der medarbeiderens "id" er "5". Den vil slette en rad fra tabellen "emp".
Hent postene til tabellen "emp" og se på den. Du kan se at raden er fjernet der "id" var "5".
Nå trekker du ut "revisjon" -tabelloppføringene, og du vil merke at den er oppdatert fordi DELETE-operasjonen er utført på tabellen "emp".
Konklusjon:
Vi har gjort nesten alle viktige eksempler for å forstå begrepet TRIGGER mens vi utfører INSERT, UPDATE og DELETE-operasjoner.