Noen fordeler ved å bruke triggere
Syntaks
Syntaksen for å lage en trigger er gitt nedenfor.
Opprett [eller erstatt] [begrensning] Trigger Name før | Etter | I stedet for hendelse [eller ...]Forutsetninger
EN. Installer PostgreSQL
Du må installere den nyeste versjonen av PostgreSQL -pakker på Linux -operativsystemet før du utfører SQL -uttalelsene som vises i denne opplæringen. Kjør følgende kommandoer for å installere og starte PostgreSQL:
$ sudo apt-get -y installer postgreSql postgreSql-contrib
$ sudo SystemCTL Start PostgreSql.service
B. Kjør følgende kommando for å logge på PostgreSQL med rotprivilegium.
$ sudo -u postgres psql
C. Du kan opprette en database som heter “testdb ” Ved å kjøre følgende SQL -setning.
# Opprett databasetestdb;Hvis du vil lage et bord i Testdb database, så må du skrive “\ C” å endre databasen. Men i denne opplæringen endret jeg ikke databasen, og tabellen og alle funksjoner ble opprettet i standarddatabasen som heter Postgres.
Lag et bord som heter lærere og kurs med noen poster for å teste bruken av triggere som vil bli opprettet senere i denne opplæringen.
Lag bordlærere (Utløser eksempler
Hver trigger er assosiert med en PostgreSQL -funksjon. Så du må opprette funksjonen før du oppretter avtrekkeren. Måten å lage forskjellige typer triggere er vist i denne delen av opplæringen.
Eksempel 1: Lag før sett inn trigger
Førinnsatsen utløser branner før du utfører en innsatsoperasjon. Kjør følgende SQL -setning for å opprette en funksjon som er navngitt før_insert () som vil bli brukt i en Før innsats avtrekker. Et av de viktigste formålene med å bruke en trigger er datavalidering. Følgende funksjon vil sjekke om de bestemte feltene er tomme eller ikke. Hvis noen av feltverdiene forblir tomme, vil en bestemt feilmelding bli hevet. En annen validering vil bli sjekket for Navn felt, og en feilmelding vil bli hevet hvis lengden på dette feltet er mindre enn 5. Den neste betingede uttalelsen brukes til å sammenkoble strengverdien “+88” med kontaktnummer Hvis lengden på kontaktnummer felt er 11.
Opprette eller erstatte funksjonen før_insert ()Følgende utgang vises hvis funksjonen opprettes med suksess i Postgres database.
Kjør følgende SQL -setning for å lage en utløser som heter check_before_insert som vil utføre før_insert () funksjon før du setter inn den nye posten til lærere bord.
Lag trigger check_before_insertFølgende utgang vises hvis avtrekkeren opprettes med hell.
Kjør følgende innsatserklæring som inneholder alle gyldige data.
Sett inn lærere (navn, adresse, kontakt_no)Følgende utgang vises hvis den nye posten er satt inn.
Kjør følgende innsatserklæring som inneholder ugyldige data for navnefeltet.
Sett inn lærere (navn, adresse, kontakt_no)Følgende feilmelding vises for ugyldig navneverdi.
Kjør følgende innsatserklæring som inneholder den tomme verdien for adresse og kontaktnummer felt, og den tomme verdien for disse feltene er ugyldig.
Sett inn lærere (navn, adresse, kontakt_no)Følgende feilmelding vises for de tomme verdiene.
Kjør følgende valgte setning for å sjekke hvilke poster som er satt inn etter bruk av før innsatsen utløser.
Velg * fra lærere;Følgende utgang viser at bare en post er satt inn etter bruk av avtrekkeren.
Eksempel-2: Opprett etter slettutløser
Etter slettutløserbranner etter å ha slettet noen post fra den aktuelle tabellen. Kjør følgende SQL -setning for å opprette en funksjon som er navngitt After_Delete () som vil bli brukt i en Etter sletting utløser for å slette de relaterte radene fra kurs tabell når en post blir slettet fra lærere bord. Her, an gammel.id har blitt brukt til å spore slettet id fra lærere bord.
Lag funksjon etter_delete ()Følgende utgang vises hvis funksjonen opprettes med suksess i Postgres database.
Kjør følgende SQL -setning for å lage en utløser som heter delete_teacher som vil utføre After_Delete () funksjon etter å ha slettet en post fra lærere tabell som vil slette postene fra kurs bord der lærer_id Verdimatcher med de slettede id verdien av lærere bord.
Lag trigger Delete_TeacherFølgende utgang vises hvis avtrekkeren opprettes med hell.
Kjør følgende sletterklæring som vil slette posten fra lærerens bord der id Verdien er 1. De delete_teacher Utløser vil bli avfyrt hvis noen post blir slettet fra lærere bord.
Slett fra lærere der ID = 1;Følgende utdata viser at en post er slettet fra lærerens bord. Så delete_teacher Utløser vil bli avfyrt og slette alle poster fra kursbordet som inneholder 1 i lærer_id felt.
Kjør nå følgende utvalgte kommandoer for å sjekke hvilke poster som er slettet fra lærere og kurs bord.
Velg * fra lærere;Utgangen viser at en post er slettet fra lærerens bord, og to poster er slettet fra kursbordet ved å bruke utløseren.
Eksempel-3: Lag i stedet for oppdatering
I stedet for oppdatering kan du bare brukes på tabellvisningen. Så du må lage et syn på tabellen og en funksjon for å teste bruken av denne typen utløser. Kjør følgende SQL -setning for å opprette en funksjon som er navngitt insert_course () som vil oppdatere verdiene til lærere og kurs tabell etter å ha satt inn en ny post til kurs bord. Hensikten med denne funksjonen er å tildele en lærer for det nye kurset hvis læreren er tilgjengelig.
Opprette eller erstatte funksjonsinnsatsen ()Følgende utgang vises hvis funksjonen opprettes med suksess i Postgres database.
Kjør følgende SQL -kommando for å opprette en visning av kurs -tabellen.
Opprett visningskurs_view somFølgende utgang vises hvis visningen opprettes.
Kjør nå følgende SQL -setning for å opprette anstrengelsen av Sett inn trigger som er navngitt update_data som blir avfyrt når en ny post settes inn ved å bruke create_view utsikt.
Lag trigger update_dataFølgende utgang vises hvis avtrekkeren opprettes med hell.
Kjør følgende innsatserklæring for å sette inn en ny post inn i kurs -tabellen ved å bruke kurs_view utsikt.
Sett inn i Courses_View (navn, Credit_hour)Følgende utdata vises hvis dataene er satt inn vellykket ved hjelp av visning.
Kjør nå følgende utvalgte utsagn for å sjekke hvordan kursene og lærere -tabellene er endret etter å ha satt inn en ny post i kurs -tabellen ved å bruke visning.
Velg * fra lærere;Følgende utdata viser at en ny post er satt inn i kursbordet, og det tilgjengelige feltet til lærere Tabellen er oppdatert fra “T” til “F”, der ID -verdien er 3, og denne ID -verdien er oppdatert i kurs Tabell for å tilordne denne læreren for det nylig innsatte kurset.
Konklusjon
Mange databaseoppgaver kan gjøres automatisk ved å bruke en trigger i PostgreSQL -databasen. Hver trigger utføres ved å bruke en bestemt funksjon. Mange formål med å bruke triggere er blitt forklart i denne opplæringen ved å lage flere triggere med funksjonen. Tre forskjellige typer triggere er opprettet her som vil hjelpe de nye PostgreSQL -brukerne til å kjenne måten å lage og bruke triggere i PostgreSQL -databasen.