triggers pl sql tutorial with example programs
Lær alt om udløsere i PL SQL, deres typer, brug og fordele:
I PL SQL-transaktioner tutorial af PL / SQL-serien , vi har lært om COMMIT, ROLLBACK og SAVEPOINTS udsagn.
I denne artikel vil vi undersøge udløsere i PL SQL og deres fordele, typer og brug. Vi vil diskutere, hvordan man opretter, udløser, aktiverer og deaktiverer PL / SQL-udløsere ved hjælp af eksempelprogrammer.
Lad os begynde med diskussionen !!
Hvad du lærer:
Udløsere i PL / SQL
Et gemt program, der er affyret som standard eller af nogle begivenheder kaldes en trigger.
En trigger udføres på grund af nedenstående omstændigheder:
- Ved en DDL-erklæring (Data Definition Language) som DROP, ALTER eller CREATE.
- Ved en DML-erklæring (Data Manipulation Language) som UPDATE, INSERT eller DELETE.
- Ved en databasehandling som SHUTDOWN, STARTUP, LOGOFF og LOGON.
En trigger kan indstilles på et skema, en visning eller en database, hvor der er knyttet en begivenhed.
Fordele ved udløsere
Disse er anført nedenfor:
- Evne til at håndhæve referentiel integritet.
- Evne til overvågning.
- Evne til at logge og gemme data om adgang til tabeller.
- Evne til at stoppe transaktioner, der ikke er gyldige.
- Evne til at håndhæve sikkerhedsfunktioner.
- Evne til at producere afledte kolonneværdier som standard.
Anvendelse af udløsere
Disse er anført nedenfor:
- Forhindrer ukorrekte transaktioner.
- Akkumulerer oplysninger om bordbrug.
- Overvåg kritisk information.
Typer af udløsere i PL / SQL
Triggerne kan kategoriseres ud fra parametre. Typer af udløsere er anført nedenfor:
# 1) Kategorisering på udløserniveauet.
- ROW niveau trigger: Det bliver udført for hver post, der blev opdateret af en DML-erklæring.
- UDTALELSE Niveauudløser: Det udføres kun en gang af begivenhedserklæringen.
# 2) Kategorisering på udløsertimingen.
- FØR trigger: Det bliver udført før den specifikke begivenhed, der har fundet sted.
- EFTER trigger: Det bliver udført efter den specifikke begivenhed, der har fundet sted.
- I stedet for trigger: Det er en særlig type trigger, og den bliver udført for hver post, der blev opdateret af en DML-erklæring.
# 3) Kategorisering af triggerhændelsen.
- DML-udløser: Det udføres, hvis der udføres en DML-begivenhed som en UPDATE, INSERT eller DELETE.
- DDL-udløser: Det udføres, hvis en DDL-begivenhed som DROP, ALTER eller CREATE udføres.
- DATABASE-udløser: Det bliver udført, hvis en databasehændelse som SHUTDOWN, STARTUP, LOGOFF og LOGON har fundet sted.
Opret udløsere
Syntaks til oprettelse af en trigger:
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,
- OPRET (ELLER ERSTAT) TRIGGER trigger_n - Dette er til oprettelse, erstatning eller opdatering af en trigger med et navn som trigger_n.
- EFTER - Dette er til bestemmelse af det tidspunkt, hvor udløseren skal affyres. INSTEAD OF er til oprettelse af en trigger, der har en visning.
- SLET - Dette er til udførelse af DML-handlinger.
- (OF kolonne_n) - Dette er til at nævne kolonnenavnet, der skal ændres.
- (PÅ tabel_n) - Dette er til at nævne det tabelnavn, der er knyttet til udløseren.
- (REFERENCERING GAMLE SOM o NY AS n) - Dette er til henvisning til de gamle og nye værdier ved hjælp af DML-sætningen som OPDATERING, INDSÆT eller SLET.
- (FOR HVER RÆDE) - Dette bestemmer en række på niveau på niveau, dvs. udløseren udløses for hver række, der er ændret, ellers aktiveres udløseren kun en gang, når SQL-sætningen udføres, hvilket er kendt som tabelleniveauudløser.
- NÅR (tilstand) - Dette giver en betingelse for rækker, som udløseren ville blive udført for. Dette gælder kun for triggere på række.
Lad os igen overveje en tabel, der er navngivet STUDERENDE .
Lad os nu oprette en rækkeudløser på række for STUDENT-tabellen, der ville blive udført af DML-sætningen som UPDATE, INSERT eller DELETE på denne tabel. Udløseren beregner og viser aldersforskellen mellem aktuelle og tidligere værdier.
Kodeimplementering til oprettelse af trigger:
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; /
Output af ovenstående kode:
Ovenstående kode har nogle vigtige egenskaber. De er anført nedenfor:
- For en trigger på bordniveau er GAMLE og NYE adresser ikke tilgængelige. Vi kan bruge disse referencer til udløsere på postniveau.
- Hvis vi ønsker at anvende en anden forespørgsel i den samme udløser, er vi nødt til at bruge nøgleordet EFTER som en udløser, der kun kan ændre en tabel igen, når de tidligere ændringer er korrekt anvendt.
- Triggeren, der er diskuteret ovenfor, bliver udført før enhver DELETE-, UPDATE- eller INSERT-handling på bordet. Vi kan dog også designe en trigger, der også fyres på en enkelt operation ( for eksempel, EFTER INSERT, der udfører udløseren, hver gang en post indsættes ved hjælp af INSERT-operationen på bordet).
Triggering Triggers In PL SQL
For at udløse ovenstående trigger skal vi udføre enhver DML-handling som SLET, INDSÆT eller OPDATER på bordet. Lad os igen indsætte nogle værdier i studenttabellen ved hjælp af nedenstående forespørgsel:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Når INSERT-operationen er afsluttet i Student-tabellen, udløses aldersændringer bliver henrettet.
Udgangen af forespørgselskoden:
Da der oprettes en ny post, og den tidligere alder ikke er tilgængelig, er den tidligere alder og Aldersforskel beregning kommer som nul i ovenstående output.
Lad os nu rediger en post med UPDATE-sætning ved hjælp af nedenstående forespørgsel:
UPDATE student SET age = age + 1 WHERE code = 7;
Når UPDATE-operationen er afsluttet i studenttabellen, udløses aldersændringer bliver henrettet.
Outputtet fra ovenstående forespørgsel:
NY OG GAMLE Klausul
En ny klausul bruges til at gemme den nye værdi til kolonnerne i tabellen til udførelse af udløseren. Det bruges i udløsere på rekordniveau. En gammel klausul bruges til at gemme den gamle værdi for kolonnerne i tabellen til udførelse af udløseren. Det bruges også i udløsere på rekordniveau.
Således bruges den nye og gamle klausul til at holde og henvise til de nye og gamle værdier i en udløserlegeme.
Sammensat udløser
En sammensat udløser bruges til at definere operationerne for alle timingpunkter inden i udløserlegemet. Det giver bestemmelse om at fusionere alle handlinger på forskellige tidspunkter inden for et udløserorgan.
De forskellige tidspunkter er angivet nedenfor:
- EFTER UDTALELSE niveau
- FØR RAD-niveau
- EFTER RAD-niveau
- FØR UDTALELSE niveau
Deaktiver og aktiver udløser
Vi kan aktivere og deaktivere en trigger ved hjælp af en DDL-sætning ALTER.
Syntaks:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
Her er trigger_n navnet på den trigger, som vi vil aktivere eller deaktivere.
Lad os nu deaktivere udløseren ved hjælp af nedenstående forespørgsel:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Udgangen af forespørgselskoden:
Lad os nu aktivere den samme trigger ved hjælp af nedenstående forespørgsel:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Udgangen af forespørgselskoden:
Ofte stillede spørgsmål og svar
Q # 1) Hvor mange typer udløsere findes der i PL SQL?
Svar: Der er to typer udløsere i PL / SQL. De er udløser på række og udsagn på niveau.
Q # 2) Hvilken type trigger bruger de gamle og nye kvalifikationer?
manuelle testinterviewspørgsmål til 4 års erfaring
Svar: De gamle og nye kvalifikationer kan kun bruges med triggere på række. De er ikke kompatible med udløsere på sætningsniveau.
Q # 3) Hvad er forskellen mellem trigger ny og trigger gammel?
Svar: En ny trigger giver en liste over nye versioner af postobjekterne. En gammel trigger giver en liste over gamle versioner af postobjekterne.
Q # 4) Hvad er en række på niveau i PL SQL?
Svar: En trigger på række niveau udløses kun for en række én gang på grund af en begivenhed. For eksempel, Hvis sletning betragtes som en udløsende begivenhed for en tabel, påvirker en sletningserklæring to rækker, så skal udløseren affyres to gange.
Q # 5) Hvad er en trigger? Forklar med et eksempel.
Svar: En trigger er en lagret procedure, der som standard bliver fyret, hvis en hændelse opstår i databasen. For eksempel, hvis en række indsættes i en tabel, eller hvis vi ændrer nogle værdier i tabellen.
Q # 6) Hvad er eftertriggerne?
Svar: De efterfølgende udløsere affyres efter udførelsen af en DML-erklæring, men inden forpligtelsen til databasen. Det er også i stand til at rulle sin handling tilbage.
Konklusion
I denne vejledning har vi diskuteret nogle grundlæggende koncepter for udløsere i PL SQL, der er vigtige for at bruge dem under programmering. Vi har dækket nedenstående emner:
- Udløsere.
- Typer af udløsere.
- Forskellige operationer på udløsere.
<< PREV Tutorial | NÆSTE vejledning >>