triggers pl sql tutorial with example programs
Lær alt om utløsere i PL SQL, deres typer, bruk og fordeler:
I PL SQL-transaksjoner opplæring av PL / SQL-serien , har vi lært om COMMIT, ROLLBACK og SAVEPOINTS uttalelser.
I denne artikkelen vil vi utforske utløsere i PL SQL og fordelene, typene og bruken av dem. Vi vil diskutere hvordan du oppretter, utløser, aktiverer og deaktiverer PL / SQL-utløsere ved hjelp av eksempelprogrammer.
La oss begynne med diskusjonen !!
Hva du vil lære:
Utløsere i PL / SQL
Et lagret program som er utløst som standard eller av noen hendelser kalles en trigger.
En utløser utføres på grunn av følgende omstendigheter listet opp nedenfor:
- Ved en DDL (Data Definition Language) uttalelse som DROP, ALTER eller CREATE.
- Ved en DML (Data Manipulation Language) uttalelse som UPDATE, INSERT, eller DELETE.
- Ved en databasehandling som AVSLUTTING, OPPSTART, LOGOFF og LOGON.
En utløser kan settes på et skjema, visning eller database som har en hendelse tilknyttet.
Fordeler med utløsere
Disse er oppført nedenfor:
- Evne til å håndheve referanseintegritet.
- Evne til overvåking.
- Evne til å logge og holde data på tilgangstabeller.
- Evne til å stoppe transaksjoner som ikke er gyldige.
- Evne til å håndheve sikkerhetsfunksjoner.
- Evne til å produsere avledede kolonneverdier som standard.
Bruk av utløsere
Disse er oppført nedenfor:
- Hindrer upassende transaksjoner.
- Akkumulerer informasjon om bordbruk.
- Overvåk kritisk informasjon.
Typer av utløsere i PL / SQL
Utløserne kan kategoriseres basert på parametere. Typer av utløsere er oppført nedenfor:
# 1) Kategorisering på utløsernivå.
- ROW Level trigger: Den blir utført for hver plate som ble oppdatert av en DML-uttalelse.
- UTTALELSE Nivåutløser: Det blir bare utført en gang av hendelseserklæringen.
# 2) Kategorisering på utløsertimingen.
- FØR utløseren: Den blir utført før den spesifikke hendelsen som har funnet sted.
- ETTER utløseren: Det blir utført etter den spesifikke hendelsen som har funnet sted.
- I stedet for avtrekkeren: Det er en spesiell type trigger, og den blir utført for hver plate som ble oppdatert av en DML-setning.
# 3) Kategorisering av utløserhendelsen.
- DML-utløser: Den blir utført hvis en DML-hendelse som UPDATE, INSERT eller DELETE utføres.
- DDL utløser: Det blir utført hvis en DDL-hendelse som DROP, ALTER eller CREATE utføres.
- DATABASE-utløser: Den blir utført hvis en databasehendelse som SLUTT, START, LOGOFF og LOGON har funnet sted.
Lag utløsere
Syntaks for å lage en utløser:
CREATE [OR REPLACE ] TRIGGER trigger_n BEFORE DELETE [OF column_n] ON table_n [REFERENCING OLD AS o NEW AS n] [FOR EACH ROW] WHEN (condition) DECLARE <> BEGIN < > EXCEPTION <> END;
Her,
- OPPRETT [ELLER ERSTAT] TRIGGER trigger_n - Dette er for å opprette, erstatte eller oppdatere en trigger med navnet som trigger_n.
- ETTER - Dette er for å bestemme tidspunktet når utløseren skal avfyres. INSTEAD OF er for å lage en trigger som har utsikt.
- SLETT - Dette er for å utføre DML-handlingene.
- [OF kolonne_n] - Dette er for å nevne kolonnenavnet som skal endres.
- [PÅ bord_n] - Dette er for å nevne tabellnavnet som er festet til utløseren.
- [REFERANSERING GAMLE SOM o NY AS n] - Dette er for å referere til gamle og nye verdier ved DML-setningen som OPPDATERING, INSERT eller SLETT.
- [FOR HVER RAD] - Dette bestemmer en utløser på radnivå, dvs. at utløseren vil bli utløst for hver rad som er modifisert, ellers vil utløseren avfyres bare en gang når SQL-setningen kjøres, som er kjent som utløser for bordnivå.
- NÅR (tilstand) - Dette gir en betingelse for rader som utløseren vil bli utført for. Dette gjelder bare utløsere på radnivå.
La oss igjen vurdere en tabell som heter STUDENT .
La oss nå lage en radnivåutløser for STUDENT-tabellen som vil bli utført av DML-setningen som UPDATE, INSERT eller DELETE på den tabellen. Utløseren beregner og viser aldersforskjellen mellom nåværende og tidligere verdier.
Kodeimplementering for oppretting av utløsere:
CREATE OR REPLACE TRIGGER age_changes BEFORE DELETE OR INSERT OR UPDATE ON student FOR EACH ROW WHEN (NEW.CODE > 0) DECLARE age_diff number; BEGIN age_diff := :NEW.age - :OLD.age; dbms_output.put_line ('Prevoius age: ' || : OLD.age); dbms_output.put_line ('Current age: ' || : NEW.age); dbms_output.put_line ('Age difference: ' || age_diff); END; /
Utgang av ovennevnte kode:
Ovennevnte kode har noen viktige egenskaper. De er listet opp nedenfor:
- For en tabellnivåutløser er GAMLE og NYE adresser ikke tilgjengelige. Vi kan bruke disse referansene for utløsere på postnivå.
- Hvis vi vil bruke et annet spørsmål i samme utløser, må vi bruke nøkkelordet EFTER som en utløser som kan endre en tabell igjen bare etter at de forrige endringene er riktig brukt.
- Utløseren som er diskutert ovenfor blir utført før en DELETE-, UPDATE- eller INSERT-handling på bordet. Vi kan imidlertid også designe en utløser som også får sparken på en enkelt operasjon ( for eksempel, ETTER INSERT som utfører utløseren når en plate settes inn ved hjelp av INSERT-operasjonen på bordet).
Triggering Triggers In PL SQL
For å utløse utløseren ovenfor, må vi utføre en hvilken som helst DML-operasjon som DELETE, INSERT eller UPDATE på bordet. La oss igjen sette inn noen verdier i studenttabellen ved hjelp av spørringen nedenfor:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Når INSERT-operasjonen er fullført i Student-tabellen, utløseren aldersendringer blir henrettet.
Resultatet av spørringskoden:
Siden en ny plate er opprettet og den forrige alderen ikke er tilgjengelig, er den forrige alderen og Aldersforskjell beregning kommer som null i ovennevnte utdata.
La oss nå endre en post med UPDATE-setningen ved hjelp av spørringen nedenfor:
UPDATE student SET age = age + 1 WHERE code = 7;
Når OPPDATERING er fullført i studenttabellen, utløseren aldersendringer blir henrettet.
Resultatet av spørringen ovenfor:
NY OG GAMLE Klausul
En ny klausul brukes til å lagre den nye verdien for kolonnene i tabellen for utføring av utløseren. Den brukes i rekordnivåutløsere. En gammel klausul brukes til å lagre den gamle verdien for kolonnene i tabellen for utførelse av utløseren. Den brukes også i utløsere på rekordnivå.
Dermed brukes den nye og gamle paragrafen til å holde og referere til de nye og gamle verdiene i en utløserkropp.
Sammensatt utløser
En sammensatt utløser brukes til å definere operasjonene for alle timingpunktene i utløserkroppen. Det gir bestemmelsen om å slå sammen alle handlingene til forskjellige tidspunkter i ett triggerorgan.
De forskjellige tidspunktene er listet opp nedenfor:
- ETTER UTTALELSE nivå
- FØR RAD-nivå
- ETTER RAD-nivå
- FØR UTTALELSE nivå
Deaktiver og aktiver utløser
Vi kan aktivere og deaktivere en utløser ved hjelp av en DDL-setning ALTER.
Syntaks:
ALTER TRIGGER trigger_n [ENABLE|DISABLE];
Her er trigger_n navnet på utløseren vi vil aktivere eller deaktivere.
La oss nå deaktivere utløseren ved hjelp av spørringen nedenfor:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Resultatet av spørringskoden:
La oss nå aktivere den samme utløseren ved hjelp av spørringen nedenfor:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Resultatet av spørringskoden:
Ofte stilte spørsmål og svar
Q # 1) Hvor mange typer utløsere finnes i PL SQL?
Svar: Det er to typer utløsere i PL / SQL. De er utløser på radnivå og utløser på uttalelsesnivå.
Q # 2) Hvilken type trigger bruker de gamle og nye kvalifiseringskampene?
beste gratis anti spyware windows 10
Svar: De gamle og nye kvalifiseringskampene kan bare brukes med utløsere på radnivå. De er ikke kompatible med utløsere på utsagnet.
Q # 3) Hva er forskjellen mellom utløser ny og utløser gammel?
Svar: En ny trigger gir en liste over nye versjoner av plateobjektene. En gammel trigger gir en liste over gamle versjoner av plateobjektene.
Q # 4) Hva er en radnivåutløser i PL SQL?
Svar: En utløser på radnivå blir utløst for en rad bare en gang på grunn av en hendelse. For eksempel, Hvis sletting betraktes som en utløsende hendelse for en tabell, påvirker en slettsetning to rader, skal utløseren utløses to ganger.
Sp # 5) Hva er en utløser? Forklar med et eksempel.
Svar: En utløser er en lagret prosedyre som blir utløst som standard hvis en hendelse oppstår i databasen. For eksempel, hvis en rad er satt inn i en tabell eller vi endrer noen verdier i tabellen.
Sp # 6) Hva er etterutløserne?
Svar: De etterfølgende utløserne blir avfyrt etter utførelsen av en DML-uttalelse, men før forpliktelsen til databasen. Det er også i stand til å rulle tilbake sin handling.
Konklusjon
I denne veiledningen har vi diskutert noen grunnleggende konsepter for utløsere i PL SQL som er essensielle for å bruke dem under programmering. Vi har dekket følgende emner listet opp nedenfor:
- Utløsere.
- Typer av utløsere.
- Ulike operasjoner på utløsere.
<< PREV Tutorial | NESTE veiledning >>