PostgreSQL

PostgreSQL Opprett utløser etter INSERT / UPDATE / SLETT

PostgreSQL Opprett utløser etter INSERT / UPDATE / SLETT
Hver gang en definert endringshandling (SQL INSERT, UPDATE, DELETE eller TRUNCATE-erklæring) blir utført på en definert tabell, er en trigger en serie sett med hendelser som utføres automatisk. Utløsere kan brukes til å innføre forretningsregler, autentisere inngangsinformasjon og opprettholde en revisjonsspor. SQL-utløsere implementeres i henhold til SQL-format. Den inkluderer strukturer som brukes i flere programmeringsspråk, slik at du kan deklarere lokale variabler, overvåke prosessflyten med erklæringer, tildele utsagnsutfall til variabler og håndtere feil. Videre, når du først har konstruert en utløser for noe, som et bord, blir utløseren umiddelbart fjernet så snart bordet er fjernet. Vi ser på hvordan PostgreSQL Triggers fungerer i hele dette segmentet.

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.

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.

HD Remastered Games for Linux som aldri hadde en Linux-utgave tidligere
Mange spillutviklere og utgivere kommer med HD-remaster av gamle spill for å forlenge franchisetiden, vennligst fans som ber om kompatibilitet med mod...
Hvordan bruke AutoKey til å automatisere Linux-spill
AutoKey er et desktopautomatiseringsverktøy for Linux og X11, programmert i Python 3, GTK og Qt. Ved å bruke skript og MACRO-funksjonalitet kan du aut...
Hvordan vise FPS-teller i Linux-spill
Linux-spill fikk et stort press da Valve kunngjorde Linux-støtte for Steam-klient og spillene deres i 2012. Siden den gang har mange AAA- og indiespil...