Autonominen tapahtuma Oracle PL / SQL: ssä: sitoutuminen, palautus

Sisällysluettelo:

Anonim

Mitä ovat TCL-lauseet PL / SQL: ssä?

TCL on lyhenne sanoista Transaction Control Statements. Se joko tallentaa odottavat tapahtumat tai palauttaa vireillä olevan tapahtuman. Näillä lausunnoilla on tärkeä rooli, koska ellei tapahtumaa tallenneta, muutoksia DML-lauseiden kautta ei tallenneta tietokantaan. Alla ovat erilaiset TCL-lauseet.

TEHDÄ Tallentaa kaikki odottavat tapahtumat
PALAUTTAMINEN Hylkää kaikki odottavat tapahtumat
SAVEPOINT Luo tapahtumaan pisteen, johon palautus voidaan tehdä myöhemmin
PALAUTA Hylkää kaikki odottavat tapahtumat määritettyyn asti

Kauppa suoritetaan seuraavissa tilanteissa.

  • Kun jokin yllä olevista lausunnoista on annettu (paitsi SAVEPOINT)
  • Kun DDL-lausunnot annetaan. (DDL ovat automaattisen sitoutumisen lauseita)
  • KUN DCL-lausuntoja annetaan. (DCL ovat automaattisen sitoutumisen käskyjä)

Mikä on autonominen tapahtuma

PL / SQL: ssä kaikkia dataan tehtyjä muutoksia kutsutaan tapahtumiksi. Tapahtuma katsotaan suoritetuksi, kun siihen tallennetaan / hylkää. Jos tallennusta / hylkäämistä ei anneta, tapahtumaa ei katsota täydelliseksi eikä dataan tehtyjä muutoksia tehdä pysyviä palvelimella.

Huolimatta istunnon aikana tehdyistä muutoksista, PL / SQL käsittelee koko muutosta yhtenä tapahtumana ja tämän tapahtuman tallentaminen / hylkääminen vaikuttaa koko istunnon odottaviin muutoksiin. Autonominen tapahtuma tarjoaa kehittäjälle toiminnon, jossa se sallii muutosten tekemisen erillisessä tapahtumassa ja kyseisen tapahtuman tallentamisen / hylkäämisen vaikuttamatta pääistunnon tapahtumaan.

  • Tämä itsenäinen tapahtuma voidaan määrittää aliohjelmatasolla.
  • Jotta jokin alaohjelma toimisi eri tapahtumassa, avainsana "PRAGMA AUTONOMOUS_TRANSATION" tulisi antaa kyseisen lauseen deklaratiiviseen osaan.
  • Se kehottaa kääntäjää käsittelemään tätä erillisenä tapahtumana ja tallentaminen / hylkääminen tämän lohkon sisällä ei heijastu päätuotteeseen.
  • COMMIT- tai ROLLBACK-lausunnon antaminen on pakollista ennen tämän itsenäisen tapahtuman siirtämistä pääliiketoimintaan, koska milloin tahansa vain yksi tapahtuma voi olla aktiivinen.
  • Joten kun olemme tehneet itsenäisen tapahtuman, meidän on tallennettava se ja saatettava tapahtuma päätökseen, vain me voimme siirtyä takaisin päätapahtumaan.

Syntaksi:

DECLAREPRAGMA AUTONOMOUS_TRANSACTION;.BEGIN[COMMIT|ROLLBACK]END;/
  • Edellä olevassa syntaksissa lohko on tehty itsenäisenä tapahtumana.

Esimerkki 1 : Tässä esimerkissä ymmärrämme itsenäisen tapahtuman toiminnan.

DECLAREl_salary NUMBER;PROCEDURE nested_block ISPRAGMA autonomous_transaction;BEGINUPDATE empSET salary = salary + 15000WHERE emp_no = 1002;COMMIT;END;BEGINSELECT salary INTO l_salary FROM emp WHERE emp_no = 1001;dbms_output.put_line('Before Salary of 1001 is'|| l_salary);SELECT salary INTO l_salary FROM emp WHERE emp_no = 1002;dbms_output.put_line('Before Salary of 1002 is'|| l_salary);UPDATE empSET salary = salary + 5000WHERE emp_no = 1001;nested_block;ROLLBACK;SELECT salary INTO l_salary FROM emp WHERE emp_no = 1001;dbms_output.put_line('After Salary of 1001 is'|| l_salary);SELECT salary INTO l_salary FROM emp WHERE emp_no = 1002;dbms_output.put_line('After Salary of 1002 is '|| l_salary);end;

Tuotos

Before:Salary of 1001 is 15000Before:Salary of 1002 is 10000After:Salary of 1001 is 15000After:Salary of 1002 is 25000

Koodin selitys:

  • Koodirivi 2 : Ilmoitetaan l_salary NUMBER: ksi.
  • Koodirivi 3 : Nested_block-menettelyn julistaminen
  • Koodirivi 4 : Nested_block-menettelyn tekeminen AUTONOMOUS_TRANSACTION-muotoon.
  • Koodirivi 7-9: Työntekijän 1002 palkan korottaminen 15000: lla.
  • Koodirivi 10: Tapahtuman toteuttaminen.
  • Koodirivi 13-16: Työntekijöiden 1001 ja 1002 palkkatietojen tulostaminen ennen muutoksia.
  • Koodirivi 17-19: Työntekijän 1001 palkan korottaminen 5000: lla.
  • Koodirivi 20: Nested_block-menettelyn kutsuminen;
  • Koodirivi 21: Päätapahtuman hylkääminen.
  • Koodirivi 22-25: Työntekijöiden 1001 ja 1002 palkkatietojen tulostaminen muutosten jälkeen.
  • Henkilöstönumeron 1001 palkkojen korotus ei näy, koska pääjärjestely on hylätty. Työntekijän 1002 palkanlisäys heijastuu, koska kyseinen lohko on tehty erillisenä tapahtumana ja säästetty lopussa.
  • Joten riippumatta tallennuksesta / hylkäämisestä päätapahtumassa, autonomisen tapahtuman muutokset on tallennettu vaikuttamatta tärkeimpiin tapahtumiin.