pl sql transactions commit
Spoznajte PL SQL transakcije s primeri stavkov COMMIT, ROLLBACK in SAVEPOINTS:
enqueue in dequeue c ++
V tem članku bomo nadaljevali z PL / SQL serije . V PL SQL paket Vadnice smo spoznali o paketu, njegovih prednostih, specifikacijah in strukturi.
Tu bomo raziskali PL SQL transakcije in njihove značilnosti. Razpravljali bomo o nekaterih izjavah PL / SQL, kot so COMMIT, ROLLBACK, SAVEPOINTS itd., Ki so povezane s transakcijami PL SQL.
Spoznali bomo tudi stavke LOCK TABLe in AUTOCOMMIT v PL SQL.
Začnimo z razpravo !!
Kaj se boste naučili:
PL SQL Transakcije
Atomska komponenta dela v zbirki podatkov, ki ima več stavkov SQL, se imenuje transakcija. Imenuje se kot atomska, ker ko enkrat pride do sprememb, na katere vplivajo stavki SQL, jih je mogoče bodisi odobriti (neomejene posodobitve baze podatkov) bodisi premakniti nazaj (razveljaviti posodobitve baze podatkov).
Stavek SQL je treba odobriti, sicer ga je mogoče premakniti nazaj in vse spremembe, ki naj bi jih naredil SQL, ostanejo razveljavljene. Če se program PL / SQL ustavi sredi transakcije, to ne vpliva na bazo podatkov in se obnovi v prvotno stanje.
COMMIT in ROLLBACK poskrbita za to, da so spremembe zbirke podatkov večne ali razveljavljene. Stavek SAVEPOINT kaže na trenutno stanje pri obdelavi transakcij.
Začnite obdelavo transakcij
Vsaka transakcija ima začetek in zaključek.
Začetek transakcije označujejo naslednji dogodki:
- Po povezavi z bazo podatkov se izvede prvi stavek SQL.
- Po zaključku prejšnjega stavka SQL se izvrši nov stavek SQL.
Konec obdelave transakcije
Vsak program PL / SQL mora imeti stavek COMMIT ali ROLLBACK. Od programske logike je odvisno samo, ali naj po transakciji uporabimo COMMIT ali ROLLBACK.
Če se stavka COMMIT ali ROLLBACK ne uporabljata, je končno stanje baze podatkov odvisno od gostiteljskega okolja. Na primer v okolju SQL * PLUS, če je blok kode PL / SQL brez stavka COMMIT ali ROLLBACK, bo stanje baze podatkov odvisno od bloka kode, ki se izvede takoj za tem.
Če v Oraclovem okolju vključimo stavek COMMIT ali izvedemo ukaz DISCONNECT, EXIT ali QUIT po zagonu definicije podatkov ali poizvedbe za nadzor podatkov, je transakcija zavezana. Če vključimo tudi izjavo ROLLBACK, je transakcija razveljavljena.
Tako se lahko transakcija konča zaradi spodaj navedenih scenarijev:
- Izvede se stavek ROLLBACK ali COMMIT.
- DDL poizvedba ( na primer, izjava o ustvarjanju tabele), po katerem se privzeto izvaja COMMIT.
- Poizvedba DCL ( na primer, izjava GRANT), po katerem se COMMIT privzeto zažene.
- Uporabnik prekine povezavo z bazo podatkov.
- Uporabnik zažene stavek EXIT, da pride iz SQL * PLUS, po katerem se COMMIT privzeto izvede.
- SQL * PLUS naleti na nenavaden zaključek, po katerem se ROLLBACK privzeto izvede.
- Poizvedba DML se ne izvaja uspešno, zato se ROLLBACK privzeto zažene, da vrne bazo podatkov v prvotno stanje.
OBVEZI za trajne spremembe
Stavek COMMIT lahko prekine sedanjo transakcijo in trajno spremeni, kot jo izvede transakcija. Ko je COMMIT izveden, lahko dobimo spremenjene podatke.
Ko se izjava COMMIT zažene, se vse zadevne vrstice tabele sprostijo iz ključavnic. Pomaga nam tudi, da se rešimo SAVEPOINT-a. Stavek COMMIT lahko po želji spremlja stavek WORK (COMMIT WORK), ki je dodan samo za izboljšanje berljivosti kode.
Če transakcija v času COMMIT odpove in stanje transakcije ni znano, se takrat besedilo COMMENT v kodi PL / SQL shrani v podatkovni slovar skupaj z ID-jem transakcije.
Sintaksa za transakcijo COMMIT:
COMMIT;
Oglejmo si tabelo z imenom UČITELJI.
Tabelo TEACHERS smo ustvarili s pomočjo spodnjega stavka SQL:
CREATE TABLE TEACHERS ( CODE INT NOT NULL, SUBJECT VARCHAR (15) NOT NULL, NAME VARCHAR (15) NOT NULL, PRIMARY KEY (CODE) );
V to tabelo vstavite vrednosti in nato transakcijo zavežite na naslednji način:
INSERT INTO TEACHERS VALUES (1, 'SELENIUM', 'TOM'); INSERT INTO TEACHERS VALUES (2, 'UFT', 'SAM'); INSERT INTO TEACHERS VALUES (3, 'JMETERE', 'TONK'); COMMIT;
Nato se izvede spodnja poizvedba:
SELECT * FROM TEACHERS;
Izhod:
VRAČITEV Za razveljavitev sprememb
Če se sedanja transakcija konča z izjavo ROLLBACK, bo razveljavil vse spremembe, ki naj bi se zgodile v transakciji.
Stavek ROLLBACK ima naslednje funkcije, kot so navedene spodaj:
- Baza podatkov se obnovi v prvotnem stanju z izjavo ROLLBACK, če smo pomotoma izbrisali pomembno vrstico iz tabele.
- V primeru izjeme, ki je privedla do neuspešnega izvajanja stavka SQL, nam izjava ROLLBACK omogoča skok na začetno točko programa, od koder lahko sprejmemo popravne ukrepe.
- Posodobitve baze podatkov brez stavka COMMIT je mogoče preklicati z izjavo ROLLBACK.
Sintaksa za ROLLBACK transakcije:
ROLLBACK;
Sintaksa za ROLLBACK transakcije s SAVEPOINT:
ROLLBACK (TO SAVEPOINT );
Tukaj shrani_n je ime SAVEPOINT-a.
Upoštevajmo tabelo UČITELJI, ki smo jo ustvarili prej.
Izvajanje kode z ROLLBACK:
DELETE FROM TEACHERS WHERE CODE= 3; ROLLBACK;
Nato se izvede spodnja poizvedba:
SELECT * FROM TEACHERS;
Izhod zgornje kode mora biti:
V zgornji kodi smo izvedli stavek DELETE, ki naj bi izbrisal zapis učitelja s kodo, ki je enaka 3. Vendar pa zaradi stavka ROLLBACK na bazo podatkov ne vpliva in brisanje ni izvedeno.
SAVEPOINT za razveljavitev delnih sprememb
SAVEPOINT daje ime in identifikacijo trenutni točki obdelave transakcije. Običajno je povezan z izjavo ROLLBACK. Omogoča nam razveljavitev nekaterih delov transakcije, tako da se ne dotaknemo celotne transakcije.
Ko uporabljamo ROLLBACK za SAVEPOINT, se odstranijo vsi SAVEPOINTS, vključeni po tem SAVEPOINT (to je, če smo označili tri SAVEPOINTS in na drugem SAVEPOINT uporabili ROLLBACK, bo samodejno izbrisan tretji SAVEPOINT.)
Stavek COMMIT ali ROLLBACK izbriše vse SAVEPOINTS. Imena, dana SAVEPOINT, so neprijavljeni identifikatorji in jih je mogoče večkrat ponovno uporabiti znotraj transakcije. V transakciji se premika SAVEPOINT s starega na sedanji položaj.
ROLLBACK, uporabljen za SAVEPOINT, vpliva samo na tekoči del transakcije. Tako SAVEPOINT pomaga razdeliti dolgotrajno transakcijo na majhne odseke s pozicioniranjem točk preverjanja.
Sintaksa za transakcijo SAVEPOINT:
SAVEPOINT ;
Tukaj, shrani_n je ime SAVEPOINT-a.
Ponovno razmislimo o tabeli UČITELJI, ki smo jo ustvarili prej.
Izvedba kode ROLLBACK Z SAVEPOINT:
INSERT INTO TEACHERS VALUES (4, 'CYPRESS', 'MICHEAL'); SAVEPOINT s; INSERT INTO TEACHERS VALUES (5, 'PYTHON', 'STEVE'); INSERT INTO TEACHERS VALUES (6, 'PYTEST', 'ARNOLD'); ROLLBACK TO s; INSERT INTO TEACHERS VALUES (7, 'PROTRACTOR', 'FANNY'); COMMIT;
Nato se izvede spodnja poizvedba:
brezplačna programska oprema za varnostno kopiranje zunanjega trdega diska
SELECT * FROM TEACHERS;
Izhod zgornje kode mora biti:
V zgornji kodi po ROLLBACK-u s SAVEPOINT s se uporabi samo še dve vrstici, torej učitelji s KODO 4 in 7. Upoštevajte, da so bili učitelji s kodami 1, 2 in 3 dodani med ustvarjanjem tabele.
LOCK tabela v PL / SQL
Stavek LOCK v PL / SQL omogoča zaklepanje celotne baze podatkov v načinu zaklepanja. To določa, ali želimo deliti ali prepovedati dostop do tabele.
Vzemimo primer mize za zaklepanje:
LOCK TABLE teachers IN ROW SHARE MODE NOWAIT;
Zgornja poizvedba zaklene tabelo UČITELJI v načinu skupne rabe vrstic. Način skupne rabe vrstic daje dovoljenje za sočasno uporabo tabele. Uporabnikom ne omogoča zaklepanja celotne tabele za individualno uporabo. Po izvedbi COMMIT ali ROLLBACK se ključavnice tabele sprostijo. Ključna beseda NOWAIT se uporablja za omenjanje, da baza podatkov ne sme čakati, da se sprosti ključavnica.
Način zaklepanja je pomemben za ugotovitev, katere druge ključavnice je mogoče uporabiti za mizo.
Oglejmo si nekaj načinov LOCK, ki so na voljo v PL / SQL:
Sl. Ne | NAČIN ZAKLJUČITVE | NAMEN |
---|---|---|
1. | VREDNOSTNI DEL | Omogoča več uporabnikom, ki tabelo uporabljajo hkrati. Vendar uporabniki ne smejo zakleniti celotne tabele za izključno uporabo. |
dva | VRSTA EKSKLUZIVNO | Omogoča več uporabnikom, ki tabelo uporabljajo hkrati. Vendar uporabniki ne smejo zakleniti celotne tabele za izključno uporabo v načinu skupne rabe. |
3. | DELITE POSODOBITEV | Omogoča več uporabnikom, ki tabelo uporabljajo hkrati. Vendar uporabniki ne smejo zakleniti celotne tabele za izključno uporabo. |
4. | DELITI | Omogoča nam izvajanje več poizvedb v tabeli hkrati. Vendar uporabniki ne smejo spreminjati zaklenjene tabele. |
5. | DELITE VRSTO EKSKLUZIVNO | Uporabnikom omogoča dostop do tabele samo za branje. V načinu skupne rabe tabele ne smejo spreminjati ali zaklepati. |
6. | EKSKLUZIVNO | Omogoča samo izvajanje poizvedb v zaklenjeni tabeli. |
Samodejni nadzor transakcij v PL / SQL
Konfiguracijo lahko izvedemo tako, da se stavek COMMIT privzeto izvrši vsakič, ko se izvaja stavek INSERT ali DELETE. To naredimo tako, da spremenimo okolje AUTOCOMMIT na ON.
Sintaksa:
SET AUTOCOMMIT ON;
Tudi to lahko izklopite tako, da spremenite okolje AUTOCOMMIT na OFF.
Sintaksa:
SET AUTOCOMMIT OFF;
Pogosta vprašanja in odgovori
V # 1) Kakšna je transakcija v PL SQL?
Odgovor: Transakcija je skupina stavkov za izračun podatkov SQL, ki delujejo kot atomska enota. Vse transakcije so atomske narave, ki so bodisi zavezane bodisi prevzete.
V # 2) Kaj je COMMIT v PL SQL?
Odgovor: Stavek COMMIT se uporablja za trajno spremembo baze podatkov s trenutno transakcijo. Omogoča uporabnikom spremembo baze podatkov.
V # 3) Kako zaključite transakcijo?
Odgovor: Transakcija se izrecno zaključi z izjavo COMMIT ali ROLLBACK. Po zagonu stavka DML se lahko tudi brezpogojno konča.
V # 4) Ali lahko sprožimo sprožilec?
Odgovor: Da, lahko se sprožimo v sprožilcu le, če je ta sprožilna transakcija samostojna od nadrejene transakcije.
V # 5) Ali je SELECT transakcija?
Odgovor: Da, SELECT je transakcija, ki ima vse značilnosti transakcije.
V # 6) Kako vrnem transakcijo v Oracle?
Odgovor: Za povrnitev transakcije v Oracle moramo zagnati stavek ROLLBACK. Razveljavi vse spremembe, ki jih je transakcija izvedla v zbirki podatkov, in jo obnovi v prvotno stanje.
Zaključek
V tej vadnici smo podrobno razpravljali o nekaterih osnovnih pojmih transakcij PL SQL, ki so bistvenega pomena za upravljanje transakcij PL SQL. Obravnavali smo naslednje teme:
- Transakcija.
- Uporaba COMMIT v transakciji.
- Kaj je POVRAT V transakciji?
- Uporaba ROLLBACK-a s SAVEPOINT v transakciji.
- Tabela LOCK.
Priporočeno branje
- PL SQL Vadnica za začetnike s primeri | Kaj je PL / SQL
- Razvoj aplikacij baze podatkov Oracle: Oracle SQL in PL / SQL
- PL SQL paket: Vadnica Oracle PL / SQL Package z primeri
- Razlika med SQL Vs MySQL Vs SQL Server (s primeri)
- PL SQL Datetime Format: funkcije datuma in časa v PL / SQL
- Popoln vodnik za obravnavo izjem SQL PL z primeri
- SQL vs NoSQL Natančne razlike in vedeti, kdaj uporabiti NoSQL in SQL
- Vadnica za Oracle Database - Kaj je Oracle Database?