pl sql transactions commit
Saznajte o PL SQL transakcijama s primjerima naredbi COMMIT, ROLLBACK i SAVEPOINTS:
U ovom ćemo članku nastaviti s PL / SQL serija . U PL SQL paket udžbenik, naučili smo o paketu, njegovim prednostima, specifikacijama i strukturi.
spajanje sortiraj c ++ kod
Ovdje ćemo istražiti PL SQL transakcije i njihove karakteristike. Razmotrit ćemo neke PL / SQL izjave poput COMMIT, ROLLBACK, SAVEPOINTS i tako dalje koje su povezane s PL SQL transakcijama.
Također ćemo naučiti o izrazima LOCK TABLe i AUTOCOMMIT u PL SQL-u.
Počnimo s raspravom !!
Što ćete naučiti:
PL SQL transakcije
Atomska komponenta rada u bazi podataka koja ima više SQL izraza naziva se transakcija. Označava se kao atomska, jer kada postoje promjene na koje utječu SQL izrazi, mogu se ili izvršiti [neodređena ažuriranja baze podataka] ili vratiti natrag [poništiti ažuriranja baze podataka].
SQL izraz mora biti predan, inače se može vratiti, a sve izmjene koje je SQL izraz trebao učiniti ostaju poništene. Ako se PL / SQL program zaustavi usred transakcije, nema utjecaja na bazu podataka i ona se vraća u prvobitno stanje.
COMMIT i ROLLBACK vode računa o tome da su promjene u bazi podataka vječne ili poništene. Izjava SAVEPOINT ukazuje na trenutni položaj u obradi transakcija.
Započnite obradu transakcija
Svaka transakcija ima početak i raskid.
Sljedeći incidenti označavaju početak transakcije:
- Nakon povezivanja s bazom podataka izvršava se prvi SQL izraz.
- Novi SQL izraz izvršava se nakon dovršenja prethodnog SQL izraza.
Kraj obrade transakcije
Svaki PL / SQL program trebao bi imati naredbu COMMIT ili ROLLBACK. O programskoj logici ovisi samo trebamo li nakon transakcije koristiti COMMIT ili ROLLBACK.
Ako se izrazi COMMIT ili ROLLBACK ne koriste, ovisi o okolini hosta kakvo bi trebalo biti konačno stanje baze podataka. Na primjer, u okruženju SQL * PLUS, ako je PL / SQL blok koda bez naredbe COMMIT ili ROLLBACK, stanje baze podataka ovisit će o bloku koda koji se izvršava odmah nakon toga.
U Oracle okruženju, ako uključimo naredbu COMMIT ili izvršimo naredbu DISCONNECT, EXIT ili QUIT nakon pokretanja definicije podataka ili upita za kontrolu podataka, transakcija je počinjena. Također, ako uključimo izjavu ROLLBACK, transakcija se poništava.
Stoga se transakcija može završiti zbog bilo kojeg dolje navedenog scenarija:
- Izvršava se naredba ROLLBACK ili COMMIT.
- DDL upit [ na primjer, izvršava se izrada tablice], nakon čega se COMMIT izvodi prema zadanim postavkama.
- DCL upit [ na primjer, izvršava se GRANT izraz], nakon čega se COMMIT izvodi prema zadanim postavkama.
- Korisnik prekida vezu s bazom podataka.
- Korisnik pokreće izraz EXIT da bi izašao iz SQL * PLUS-a, nakon čega se COMMIT izvršava prema zadanim postavkama.
- SQL * PLUS nailazi na neobičan završetak nakon kojeg se ROLLBACK izvršava prema zadanim postavkama.
- DML upit se ne izvodi uspješno, nakon čega se ROLLBACK pokreće prema zadanim postavkama da bi se baza podataka vratila u izvorno stanje.
OBVEZATI se za trajne promjene
Izvod COMMIT može prekinuti sadašnju transakciju i izvršiti trajnu izmjenu kako je izvršava transakcija. Jednom kada se izvrši COMMIT, možemo doći do modificiranih podataka.
Kako se izvršava izraz COMMIT, svi pogođeni redovi tablice oslobađaju se iz brava. Također nam pomaže da se riješimo SAVEPOINT-a. Izraz COMMIT može po želji biti popraćen iskazom WORK [COMMIT WORK] koji se dodaje samo radi poboljšanja čitljivosti koda.
U slučaju da transakcija ne uspije u vrijeme COMMIT-a i stanje transakcije nije poznato, tada se COMMENT tekst u PL / SQL kodu pohranjuje u podatkovni rječnik zajedno s id-om transakcije.
Sintaksa za TRANSAKCIJU transakcije:
COMMIT;
Razmotrimo tablicu pod nazivom UČITELJI.
Stvorili smo tablicu TEACHERS uz pomoć dolje navedenog SQL izraza:
CREATE TABLE TEACHERS ( CODE INT NOT NULL, SUBJECT VARCHAR (15) NOT NULL, NAME VARCHAR (15) NOT NULL, PRIMARY KEY (CODE) );
U ovu tablicu umetnite vrijednosti, a zatim izvršite transakciju na sljedeći način:
INSERT INTO TEACHERS VALUES (1, 'SELENIUM', 'TOM'); INSERT INTO TEACHERS VALUES (2, 'UFT', 'SAM'); INSERT INTO TEACHERS VALUES (3, 'JMETERE', 'TONK'); COMMIT;
Zatim se izvršava upit u nastavku:
SELECT * FROM TEACHERS;
Izlaz:
POVRATAK Poništavanje promjena
Ako se trenutna transakcija završi izjavom ROLLBACK, tada će poništiti sve izmjene koje bi se trebale dogoditi u transakciji.
Izjava ROLLBACK ima sljedeće značajke kako su navedene u nastavku:
- Baza podataka vraća se u izvorno stanje s naredbom ROLLBACK u slučaju da smo greškom izbrisali važan redak iz tablice.
- U slučaju iznimke koja je dovela do neuspjeha izvršavanja SQL izraza, naredba ROLLBACK omogućuje nam skok na početnu točku programa odakle možemo poduzeti popravne mjere.
- Ažuriranja u bazi podataka bez naredbe COMMIT mogu se opozvati izjavom ROLLBACK.
Sintaksa za ROLLBACK transakcije:
ROLLBACK;
Sintaksa za vraćanje transakcije sa SAVEPOINT:
ROLLBACK [TO SAVEPOINT ];
Evo, spremi_n je naziv SAVEPOINT-a.
Razmotrimo tablicu UČITELJI koju smo ranije stvorili.
Implementacija koda s ROLLBACK-om:
DELETE FROM TEACHERS WHERE CODE= 3; ROLLBACK;
Zatim se izvršava upit u nastavku:
SELECT * FROM TEACHERS;
Izlaz gornjeg koda trebao bi biti:
U gornjem kodu izvršili smo naredbu DELETE koja bi trebala izbrisati zapis učitelja s CODE jednakim 3. Međutim, zbog naredbe ROLLBACK nema utjecaja na bazu podataka i brisanje nije izvršeno.
SAVEPOINT za poništavanje djelomičnih promjena
SAVEPOINT daje ime i identifikaciju trenutnoj točki obrade transakcije. Općenito je povezan s naredbom ROLLBACK. Omogućuje nam vraćanje nekih odjeljaka transakcije ne dodirujući cijelu transakciju.
Kako primjenjujemo ROLLBACK na SAVEPOINT, uklanjaju se svi SAVEPOINTS uključeni nakon tog određenog SAVEPOINT-a [to jest ako smo označili tri SAVEPOINTS-a i primijenili ROLLBACK na drugom SAVEPOINT-u, automatski će se izbrisati treći SAVEPOINT.]
Izraz COMMIT ili ROLLBACK briše sve SAVEPOINTS. Imena dana SAVEPOINT-u neprijavljeni su identifikatori i mogu se ponovno primijeniti nekoliko puta unutar transakcije. Postoji pomicanje SAVEPOINT-a sa starog na sadašnji položaj unutar transakcije.
ROLLBACK primijenjen na SAVEPOINT utječe samo na tekući dio transakcije. Stoga SAVEPOINT pomaže podijeliti dugotrajnu transakciju na male odjeljke postavljanjem točaka provjere valjanosti.
Sintaksa za transakciju SAVEPOINT:
SAVEPOINT ;
Ovdje, spremi_n je naziv SAVEPOINT-a.
Razmotrimo ponovno tablicu UČITELJI koju smo ranije stvorili.
Implementacija koda ROLLBACK-a SAVEPOINT-om:
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;
Zatim se izvršava upit u nastavku:
SELECT * FROM TEACHERS;
Izlaz gornjeg koda trebao bi biti:
najbolji mobitel špijunski softver za android
U gornjem kodu, nakon ROLLBACK-a sa SAVEPOINT-om s primjenjuje se, umetnuta su samo još dva retka, tj. učitelji s KODOM 4 i 7. Imajte na umu da su tijekom izrade tablice dodani učitelji s kodovima 1, 2 i 3.
Tablica LOCK u PL / SQL
Izjava LOCK u PL / SQL omogućuje zaključavanje cijele baze podataka u načinu zaključavanja. To određuje želimo li dijeliti ili zabraniti pristup tablici.
Uzmimo primjer tablice zaključavanja:
LOCK TABLE teachers IN ROW SHARE MODE NOWAIT;
Gornji upit zaključava tablicu UČITELJI u načinu dijeljenja reda. Način dijeljenja redaka daje dopuštenje za istodobnu upotrebu tablice. Korisnicima ne dopušta zaključavanje pune tablice za individualnu upotrebu. Nakon izvršavanja COMMIT-a ili ROLLBACK-a, brave tablice se oslobađaju. Ključna riječ NOWAIT koristi se za spominjanje da baza podataka ne smije čekati oslobađanje brave.
Način zaključavanja važan je kako bi se zaključilo koje se druge brave mogu primijeniti na stol.
Razmotrimo neke načine zaključavanja dostupne u PL / SQL:
Sl. Ne | NAČIN ZAKLJUČAVANJA | SVRHA |
---|---|---|
1 | REDNI UDJEL | Omogućuje više korisnika koji istovremeno koriste tablicu. Međutim, korisnici ne smiju zaključati kompletnu tablicu za isključivu upotrebu. |
dva | RED EKSKLUZIVNO | Omogućuje više korisnika koji istovremeno koriste tablicu. Međutim, korisnici ne smiju zaključati kompletnu tablicu za isključivu upotrebu u načinu dijeljenja. |
3 | DIJELITE AŽURIRANJE | Omogućuje više korisnika koji istovremeno koriste tablicu. Međutim, korisnici ne smiju zaključati kompletnu tablicu za isključivu upotrebu. |
4 | UDIO | Omogućuje nam istodobno izvršavanje više upita na tablici. Međutim, korisnicima nije dopušteno mijenjati zaključanu tablicu. |
5 | PODIJELITE RED EKSKLUZIVNO | Omogućuje korisnicima pristup tablici samo za čitanje. Ne smiju mijenjati tablicu niti zaključavati tablicu u načinu dijeljenja. |
6 | EKSKLUZIVAN | Omogućuje samo izvršavanje upita na zaključanoj tablici. |
Automatska kontrola transakcija u PL / SQL
Možemo napraviti konfiguraciju tako da se naredba COMMIT izvršava prema zadanim postavkama kad god se izvrši INSERT ili DELETE izraz. To se postiže postavljanjem varijable okoline AUTOCOMMIT na ON.
Sintaksa:
SET AUTOCOMMIT ON;
Opet, ovo se može isključiti postavljanjem varijable okoline AUTOCOMMIT na OFF.
Sintaksa:
SET AUTOCOMMIT OFF;
Često postavljana pitanja i odgovori
P # 1) Koja je transakcija u PL SQL-u?
Odgovor: Transakcija je skupina SQL izraza za izračunavanje podataka koji rade kao atomska jedinica. Sve su transakcije atomske prirode, koje su ili počinjene ili podržane.
P # 2) Što je COMMIT u PL SQL-u?
Odgovor: Izraz COMMIT koristi se za trajnu promjenu baze podataka trenutnom transakcijom. Omogućuje korisnicima izmjenu baze podataka.
P # 3) Kako završavate transakciju?
Odgovor: Transakcija se eksplicitno završava s naredbom COMMIT ili ROLLBACK. Također se može bezuvjetno završiti nakon pokretanja DML izraza.
P # 4) Možemo li izvršiti okidač?
Odgovor: Da, možemo aktivirati okidač samo ako je ta okidačka transakcija samostalna od nadređene transakcije.
P # 5) Je li SELECT transakcija?
Odgovor: Da, SELECT je transakcija koja ima sve karakteristike transakcije.
P # 6) Kako mogu vratiti transakciju u Oracle?
Odgovor: Moramo pokrenuti naredbu ROLLBACK za vraćanje transakcije u Oracle. Poništit će sve promjene izvršene transakcijom u bazi podataka i vratit će se u prvobitno stanje.
Zaključak
U ovom uputstvu detaljno smo razgovarali o nekim osnovnim konceptima PL SQL transakcija koji su ključni za upravljanje PL SQL transakcijama. Obradili smo sljedeće teme navedene u nastavku:
- Transakcija.
- Korištenje COMMIT-a u transakciji.
- Što je povrat u transakciji?
- Upotreba ROLLBACK-a sa SAVEPOINT-om u transakciji.
- LOCK stol.
Preporučena literatura
- PL SQL Vodič za početnike s primjerima | Što je PL / SQL
- Razvoj aplikacije Oracle baze podataka: Oracle SQL i PL / SQL
- PL SQL paket: Vodič za Oracle PL / SQL paket sa primjerima
- Razlika između SQL Vs MySQL Vs SQL Server (s primjerima)
- PL SQL format vremena i datuma: funkcije datuma i vremena u PL / SQL-u
- Cjelovit vodič za rukovanje iznimkama PL SQL-a s primjerima
- SQL vs NoSQL Točne razlike i znajte kada koristiti NoSQL i SQL
- Vodič za Oracle baze podataka - Što je Oracle baza podataka?