PostgreSQL Lag trigger etter innsats/oppdatering/slett

PostgreSQL Lag trigger etter innsats/oppdatering/slett
Hver gang en definert endringshandling (SQL Sett inn, oppdaterer, sletter eller avkortet erklæring) utføres på en definert tabell, er en trigger et seriesett med hendelser som utføres automatisk. Utløsere kan brukes til å pålegge forretningsregler, autentisere inngangsinformasjon og opprettholde en revisjonsspor. SQL -triggere implementeres i henhold til SQL -formatet. Det inkluderer strukturer som brukes på flere programmeringsspråk som lar deg erklære lokale variabler, overvåke strømmen av prosessen med erklæringer, tildele uttalelsesresultater til variabler og håndtere feil. Når du først har konstruert en trigger for noe, som et bord, fjernes avtrekkeren umiddelbart så snart bordet er fjernet. Vi ser på hvordan PostgreSQL trigger fungerer i hele dette segmentet.

Syntaks:

Følgende er den enkle syntaks for å generere en trigger:

>> Opprett trigger trigger_name [før | etter | i stedet for] hendelsesnavn på tabell_navn [----- Trigger Logic];

Her er forklaringen på ovennevnte generelle spørsmål.

  • Trigger_name: Navn på en trigger
  • Før, etter, i stedet for: Vilkår som bestemmer når avtrekkeren vil være aktiv
  • Arrangementsnavn: Tittelen på forekomsten som kan sette av avtrekkeren (dette kan være, enten det er fra innsats eller oppdatering eller slett)
  • Bordnavn: Spesifiserer tabellen som trigger skal konstrueres

For å forstå triggerkonseptet kort, lanser du PostgreSql -skallet fra applikasjonene. Endre serveren hvis du vil jobbe med en annen server, eller ellers trykker du inn på tastaturet. Legg til databasenavnet du vil jobbe med, ellers, la det være som det er og trykk Enter. Som du kan se, har vi for øyeblikket jobber med port 5432 som standard; Du kan også endre det. Etter det, oppgi et annet brukernavn enn Postgres hvis du vil samarbeide med en annen bruker, ellers la det være tomt og trykk Enter -knappen. Nå er kommandoskallet ditt klart til å brukes.

Utløs etter INSERT -kommandoen

La oss se på eksemplet med en trigger når INSERT -kommandoen har blitt brukt som en triggerhendelse. For dette må vi lage to nye tabeller, e.g., “Ansett” og “revisjon”. Tabellen "ansatt" vil inneholde de ansattes personlige poster fra et bestemt selskap, og tabellen "revisjon" vil inneholde informasjonen om når de ansatte ble med i selskapet. Spørsmålene om å lage tabellene er gitt nedenfor.

>> Opprett tabell ansatt (id heltall ikke null primærnøkkel, navn varchar (100) ikke null, alder varchar (100) ikke null, lønn varchar (100) ikke null);
>> Lag tabellrevisjon (Empid heltall ikke null, entry_date varchar (100) ikke null);

Du må lage en prosedyre som automatisk vil bli utført eller arbeide når utløseren vil bli kalt. Det vil bli brukt i neste Create Trigger -kommando. Fra kommandoen nedenfor kan du få en ide om at vi har opprettet en prosedyre “AuditLogFunc ()”, som vil returnere en utløser som variabel “$ examp_table $”. Funksjonen begynner med BEGIN -klausulen, etterfulgt av innsatserklæringen. Denne innsatserklæringen setter inn automatisk ID og gjeldende tidsdato ved hjelp av den innebygde funksjonen i "revisjon" -tabellen og returnerer dette resultatet for å utløse utløser.

Det er på tide å generere en trigger ved hjelp av Create Trigger -kommandoen. Vi oppretter en trigger som heter “EMP_TRIG” på tabellen “ansetter”. Klausulen etter innsetting av betyr at denne utløseren bare vil fungere etter utførelsen av INSERT -kommandoen. For hver rad betyr ved utførelsen av hver innsats -kommando, vil denne utløseren ringe og utføre "AuditLogFunc ()" -prosedyren som er opprettet rett før.

>> Lag trigger emp_trig etter innsetting på bruk for hver rad utfør prosedyre auditlogfunc ();

Det er på tide å sette inn noen data i tabellen "Ansett". Utfør kommandoen nedenfor i skallet.

>> sett inn i ansettelsesverdier (ID, navn, alder, lønn) ('1', 'Paul', '34', '60000');

Ta en titt på tabellen "Ansett". Dataene er lagt til med suksess med INSERT -kommandoen.

Har nå et glimt av "revisjonstabellen". Du kan se, det blir også oppdatert på grunn av trigger "emp_trig" og auditlogfunc ().

Utløs etter oppdateringskommando

Vi vil nå se på et eksempel på en trigger ved å bruke oppdateringskommandoen som en triggerhendelse. Vi må lage en ny prosedyre igjen med det forskjellige navnet "Update" som presentert i bildet. Denne prosedyren vil også sette inn poster i "revisjonstabellen ved samtale.

Lag nå en ny trigger som heter "update_emp" ved hjelp av Create Trigger -kommandoen. Dette vil bare fungere etter utførelsen av oppdateringsspørsmålet på tabellen som brukes, og det vil kalle prosedyren "oppdatering".

Oppdater tabellen “Ansett” ved å sette IDen sin til “2”.

Hent postene til et tabell “Ansett” for å se endringene som vedlagt nedenfor.

Som du kan se på tabellen “Audit”, har det blitt omorganisert etter hvert som tabellen “ansatt” ble oppdatert.

Utløser ved slettekommando

Å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 "revisjonstabellen.

Denne gangen vil vi påkalle Trigger -kommandoen med Delete -kommandoen. Nedenfor er tabellen “EMP” med noen poster.

Her er revisjonstabellen med de to foregående oppdateringene.

Lag en prosedyre som heter “Del ()” for å utløse innsetting i "revisjonstabellen" ved å slette postene fra tabellen "EMP".

Lag en trigger “Del_trig” ved hjelp av Create Trigger -spørringen. Denne utløseren vil utføre prosedyren “Del” når en del av slettbestemmelsen vil bli utført på tabellen “EMP”.

La oss slette en post fra tabellen “EMP” der den ansatte “ID” er “5”. Den vil slette en rad fra tabellen “EMP”.

Hente postene til tabellen "emp" og se på det. Du kan se at raden er fjernet der "ID" var "5".

Pakk ut "revisjon" -tabellpostene ", og du vil merke at den er oppdatert fordi slettoperasjonen er utført på tabellen" EMP ".

Konklusjon:

Vi har gjort nesten alle viktige eksempel for å forstå konseptet med trigger mens vi utfører innsats, oppdatering og slett operasjoner.