Oracle med hjälp av efteråtkörning och efter uppdatering utlösare

En databasutlösare är en lagrad procedur som automatiskt utförs när en händelse inträffar. Händelsen kan vara insert-delete-update-operationer.

Oracle initierar en "Efter INSERT" -triggare efter att en inmatningshändelse har inträffat och en "Efter uppdatering" -triggare efter att en uppdateringshändelse har inträffat.

Låt oss se ett exempel för "Efter inSERT" -triggare.

Syntax:

SKAPA eller BYTA TRIGGER trigger_name
EFTER INSERT PÅ tabellnamn
FÖR VARJE RÅD
FÖRKLARA
variabla deklarationer
BÖRJA
utlösande uttalande
SLUTET;

Första problemet: Vi vill infoga en post i tabellen emp_backup, om en post läggs in i emp-tabellen.

Lösning - En efter INSERT Trigger

Låt oss skapa ett emp-bord.

SQL> skapa tabell emp (
empidnummer (10),
fname varchar (25),
lname varchar (25)
);

Nu skapa en "emp_backup" bord med samma struktur som "emp" bord.

SQL> skapa tabell emp_backup (
empidnummer (10),
fname varchar (25),
lname varchar (25)
);

Nu, för att infoga en post i 'emp_backup'-tabellen om en post sätts in i' emp'-tabell, skriver vi en "INTER INSERT" Trigger.

SQL> CREATE eller REPLACE TRIGGER emp_after_insert
EFTER INSERT PÅ emp
FÖR VARJE RÅD
FÖRKLARA
BÖRJA
sätt in i emp_backup-värdena (: new.empid,: new.fname,: new.lname);
DBMS_OUTPUT.PUT_LINE ("Spela in framgångsrikt infört i emp_backup-tabellen");
SLUTET;

Ovanstående trigger kallad 'emp_after_insert' är initierad för varje rad införd in i emp tabell. Om vi ​​lägger in en rad i emp-tabellen läggs den automatiskt in i emp_backup-tabellen.

SQL> infoga i emp-värden (1, 'jon', 'gibson');
Spela in framgångsrikt infört i emp_backup-tabellen
1 rad skapad.

Fråga nu "emp" -tabellen.

SQL> välj * från emp; EMPID FNAME LNAME ---------- ------------------------- ------------ ------------- 1 Jon Gibson

Fråga 'emp_backup'-tabellen.

SQL> välj * från emp_backup; EMPID FNAME LNAME ---------- ------------------------- ------------ ------------- 1 Jon Gibson


Obs! Om du inte får meddelandet "Spela in framgångsrikt infört i emp_backup-tabellen'gör kommandot nedan innan du skapar avtryckaren.

SQL> Sätta serverutmatning på;

Låt oss se ett exempel på "Efter uppdatering" -utlösare.

Syntax:

SKAPA eller BYTA TRIGGER trigger_name
EFTER UPPDATERING PÅ tabellnamn
FÖR VARJE RÅD
FÖRKLARA
variabla deklarationer
BÖRJA
utlösande uttalande
SLUTET;

Andra problemet: Vi vill o uppdatera en post i tabellen 'emp_backup' om en motsvarande post uppdateras i emp-tabellen.

Eftersom vi redan har skapat båda tabellerna i ovanstående exempel, skriver vi direkt en trigger för "Efter uppdatering".

SQL> CREATE eller REPLACE TRIGGER emp_after_update EFTER UPPDATERING av empid på emp FÖR VARJE RADDEKLARERA BEGIN uppdatering emp_backup set empid =: new.empid where empid =: old.empid; DBMS_OUTPUT.PUT_LINE ("empid framgångsrikt uppdaterad till emp_backup tabell"); SLUTET;

Ovanstående trigger som heter 'emp_after_update' kommer att initieras när "empid" -kolumnen i emp-tabellen uppdateras.

Nu innan du uppdaterar 'empid'-kolumnen i emp-tabellen, se emp-och emp_backup-tabellen.

SQL> välj * från emp; EMPID FNAME LNAME ---------- ------------------------- ------------ ------------- 1 Jon Gibson
SQL> välj * från emp_backup; EMPID FNAME LNAME ---------- ------------------------- ------------ ------------- 1 Jon Gibson

Nu uppdatera kolumnen Emp empel i emp-tabellen.

SQL> uppdatera emp
set empid = 5
där empid = 1;
empid framgångsrikt uppdaterad till emp_backup tabellen
1 rad uppdaterad.

Efter uppdatering av "empid" i "emp" -bordet, låt oss se tabellen "emp_backup".

SQL> välj * från emp_backup; EMPID FNAME LNAME ---------- ------------------------- ------------ ------------- 5 Jon Gibson

Obs! Om du inte får meddelandet "empid framgångsrikt uppdaterad till emp_backup tabellen'kör kommandot nedan innan du skapar avtryckaren.

SQL> Sätta serverutmatning på;