pl sql transactions commit
Lær om PL SQL-transaksjoner med eksempler på COMMIT-, ROLLBACK- og SAVEPOINTS-utsagn:
I denne artikkelen vil vi fortsette med PL / SQL-serien . I PL SQL-pakke veiledning, har vi lært om Package, fordelene, spesifikasjonene og strukturen.
Her vil vi utforske PL SQL-transaksjoner og deres egenskaper. Vi skal diskutere noen PL / SQL-utsagn som COMMIT, ROLLBACK, SAVEPOINTS og så videre som er relatert til PL SQL-transaksjoner.
Vi vil også lære om LOCK TABLe og AUTOCOMMIT uttalelser i PL SQL.
La oss begynne med diskusjonen !!
Hva du vil lære:
PL SQL-transaksjoner
En atomkomponent av arbeid i en database som har flere SQL-setninger kalles en transaksjon. Det blir referert til som atomisk fordi når det er endringer som er påvirket av SQL-setninger, kan de enten være begått (ubestemte oppdateringer til databasen) eller rullet tilbake (angre oppdateringer til databasen).
En SQL-setning må begås ellers kan den rulles tilbake og alle endringene som SQL-setningen skulle gjøre, blir angret. Hvis PL / SQL-programmet blir stoppet midt i transaksjonen, er det ingen innvirkning på databasen, og den blir gjenopprettet til sin opprinnelige tilstand.
COMMIT og ROLLBACK tar seg av at endringene i databasen enten er evigvarende eller angret. SAVEPOINT-uttalelse peker på den nåværende posisjonen i transaksjonsbehandling.
Start transaksjonsbehandling
Hver transaksjon har en start og en avslutning.
Følgende hendelser markerer at en transaksjon begynner:
- Etter tilkoblingen til databasen kjøres den første SQL-setningen.
- En ny SQL-setning kjøres etter at den forrige SQL-setningen er fullført.
Avslutt transaksjonsbehandling
Hvert PL / SQL-program skal ha en COMMIT- eller ROLLBACK-setning. Det avhenger bare av programmeringslogikken om vi skal bruke en COMMIT eller en ROLLBACK etter transaksjonen.
Hvis COMMIT- eller ROLLBACK-setninger ikke brukes, avhenger det av vertsmiljøet hvordan den endelige tilstanden til databasen skal være. For eksempel, i et SQL * PLUS-miljø, hvis en PL / SQL-kodeblokk er uten en COMMIT- eller ROLLBACK-setning, vil tilstanden til databasen avhenge av kodeblokken som utføres rett etter det.
I et Oracle-miljø, hvis vi inkluderer en COMMIT-setning eller utfører kommandoen DISCONNECT, EXIT eller QUIT etter å ha kjørt en datadefinisjon eller et datakontrollspørsmål, blir transaksjonen begått. Hvis vi inkluderer en ROLLBACK-uttalelse, angres transaksjonen.
Dermed kan en transaksjon avsluttes på grunn av nedenstående scenarier:
- En ROLLBACK- eller COMMIT-uttalelse utføres.
- Et DDL-spørsmål ( for eksempel, en tabellopprettelseserklæring) kjøres, hvoretter COMMIT kjøres som standard.
- Et DCL-spørsmål ( for eksempel, en GRANT-setning) utføres, hvoretter COMMIT kjøres som standard.
- Bruker avslutter databaseforbindelsen.
- Bruker kjører EXIT-setningen for å komme ut av SQL * PLUS, hvoretter COMMIT utføres som standard.
- SQL * PLUS møter en uvanlig avslutning, hvoretter ROLLBACK utføres som standard.
- Et DML-spørsmål kjører ikke vellykket, hvoretter ROLLBACK kjøres som standard for å bringe databasen tilbake til sin opprinnelige tilstand.
FORPLIGTELSE FOR Permanente endringer
COMMIT-uttalelse er i stand til å avslutte den nåværende transaksjonen og foreta en permanent endring som utført av transaksjonen. Når COMMIT er utført, kan vi få tak i de modifiserte dataene.
Når COMMIT-setningen kjøres, frigjøres alle berørte radene i tabellen fra låser. Det hjelper oss også med å bli kvitt SAVEPOINT. En COMMIT-uttalelse kan valgfritt ledsages av WORK-setning (COMMIT WORK) som bare legges til for å forbedre kodelesbarheten.
I tilfelle en transaksjon mislykkes på tidspunktet for KOMMITTET og tilstanden til transaksjonen ikke er kjent, lagres KOMMENTT-teksten i PL / SQL-koden på det tidspunktet i en dataordbok sammen med ID-en for transaksjonen.
Syntaks for transaksjon COMMIT:
COMMIT;
La oss se på et bord som heter LÆRERE.
Vi har laget tabellen LÆRERE ved hjelp av SQL-setningen nedenfor:
CREATE TABLE TEACHERS ( CODE INT NOT NULL, SUBJECT VARCHAR (15) NOT NULL, NAME VARCHAR (15) NOT NULL, PRIMARY KEY (CODE) );
Sett inn verdier i denne tabellen og begå deretter transaksjonen på følgende måte:
INSERT INTO TEACHERS VALUES (1, 'SELENIUM', 'TOM'); INSERT INTO TEACHERS VALUES (2, 'UFT', 'SAM'); INSERT INTO TEACHERS VALUES (3, 'JMETERE', 'TONK'); COMMIT;
Deretter kjøres spørringen nedenfor:
SELECT * FROM TEACHERS;
Produksjon:
RULBACK For å angre endringer
Hvis en nåværende transaksjon avsluttes med en ROLLBACK-uttalelse, vil den angre alle endringene som skal finne sted i transaksjonen.
En ROLLBACK-uttalelse har følgende funksjoner som er oppført nedenfor:
- Databasen gjenopprettes med sin opprinnelige tilstand med en ROLLBACK-setning i tilfelle vi feilaktig har slettet en viktig rad fra tabellen.
- I tilfelle et unntak som har ført til utførelsen av en SQL-setning, gjør en ROLLBACK-setning oss i stand til å hoppe til startpunktet for programmet hvor vi kan ta utbedrende tiltak.
- Oppdateringene som er gjort i databasen uten COMMIT-uttalelse, kan tilbakekalles med en ROLLBACK-setning.
Syntaks for transaksjon ROLLBACK:
ROLLBACK;
Syntaks for transaksjon ROLLBACK med SAVEPOINT:
ROLLBACK (TO SAVEPOINT );
Her, den lagre_n er navnet på SAVEPOINT.
La oss se på tabellen LÆRERE vi har opprettet tidligere.
Kodeimplementering med ROLLBACK:
DELETE FROM TEACHERS WHERE CODE= 3; ROLLBACK;
Deretter kjøres spørringen nedenfor:
SELECT * FROM TEACHERS;
Output av ovennevnte kode skal være:
I koden ovenfor har vi utført en DELETE-setning som skal slette posten til læreren med CODE lik 3. Imidlertid, på grunn av ROLLBACK-setningen, har det ingen innvirkning på databasen, og sletting gjøres ikke.
SAVEPOINT For tilbakestilling av delvise endringer
SAVEPOINT gir navn og identifikasjon til det nåværende transaksjonsbehandlingspunktet. Det er vanligvis assosiert med en ROLLBACK-uttalelse. Det gjør det mulig for oss å tilbakeføre noen deler av en transaksjon ved ikke å berøre hele transaksjonen.
Når vi bruker ROLLBACK på en SAVEPOINT, blir alle SAVEPOINTS som følger med den aktuelle SAVEPOINTen fjernet (det vil si hvis vi har merket tre SAVEPOINTS og brukt en ROLLBACK på den andre SAVEPOINT, automatisk blir den tredje SAVEPOINT slettet.)
EN COMMIT eller en ROLLBACK-setning sletter alle SAVEPOINTS. Navnene som er gitt til SAVEPOINT er ikke-deklarerte identifikatorer og kan brukes på nytt flere ganger i en transaksjon. Det er en bevegelse av SAVEPOINT fra den gamle til den nåværende posisjonen i transaksjonen.
EN ROLLBACK brukt på en SAVEPOINT påvirker bare den pågående delen av transaksjonen. Dermed hjelper en SAVEPOINT med å dele en langvarig transaksjon i små seksjoner ved å plassere valideringspunkter.
Syntaks for transaksjon SAVEPOINT:
SAVEPOINT ;
Her, lagre_n er navnet på SAVEPOINT.
La oss igjen se på LÆRERE-tabellen vi har opprettet tidligere.
Kodeimplementering av ROLLBACK WITH 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;
Deretter kjøres spørringen nedenfor:
SELECT * FROM TEACHERS;
Output av ovennevnte kode skal være:
I koden ovenfor, etter ROLLBACK med SAVEPOINT s brukes, ble bare to rader satt inn, dvs. lærere med henholdsvis KODE 4 og 7. Vær oppmerksom på at lærere med kode 1, 2 og 3 er lagt til under opprettelsen av tabellen.
LOCK-tabell i PL / SQL
LOCK-setning i PL / SQL muliggjør låsing av hele databasen i låsemodus. Dette avgjør om vi vil dele eller ikke tillate tilgang til tabellen.
hvor kan jeg se anime gratis
La oss ta et eksempel på et låsebord:
LOCK TABLE teachers IN ROW SHARE MODE NOWAIT;
Spørringen ovenfor låser LÆRER-tabellen i raddelingsmodus. En raddelingsmodus gir tillatelse til en samtidig bruk av en tabell. Det tillater ikke brukere å låse hele bordet for individuell bruk. Etter utførelsen av en COMMIT eller ROLLBACK frigjøres bordlåsene. NOWAIT-nøkkelord brukes til å nevne at databasen ikke har lov til å vente på at en lås skal frigjøres.
Låsemodus er viktig for å konkludere med hvilke andre låser som kan brukes på et bord.
La oss diskutere noen LOCK-moduser som er tilgjengelige i PL / SQL:
Sl. Nei | LÅSEMODUS | HENSIKT |
---|---|---|
1 | RADELING | Det tillater flere brukere å bruke tabellen samtidig. Brukerne har imidlertid ikke lov til å låse hele tabellen for eksklusiv bruk. |
to | RAD EKSKLUSIV | Det tillater flere brukere å bruke tabellen samtidig. Brukerne har imidlertid ikke lov til å låse hele tabellen for eksklusiv bruk i delingsmodus. |
3 | DEL OPPDATERING | Det tillater flere brukere å bruke tabellen samtidig. Brukerne har imidlertid ikke lov til å låse hele tabellen for eksklusiv bruk. |
4 | DELE | Det lar oss utføre flere spørsmål på bordet samtidig. Brukerne har imidlertid ikke lov til å endre den låste tabellen. |
5 | DEL RAD EKSKLUSIV | Det gir brukere med skrivebeskyttet tilgang til tabellen. De har ikke lov til å endre bordet eller låse bordet i delingsmodus. |
6 | EKSKLUSIV | Det tillater bare å utføre spørsmål på det låste bordet. |
Automatisk transaksjonskontroll i PL / SQL
Vi kan konfigurere slik at en COMMIT-setning blir utført som standard når en INSERT- eller DELETE-setning kjøres. Dette gjøres ved å gjøre AUTOCOMMIT-miljøvariabelen til PÅ.
Syntaks:
SET AUTOCOMMIT ON;
Igjen, dette kan slås av ved å gjøre AUTOCOMMIT-miljøvariabelen til OFF.
Syntaks:
SET AUTOCOMMIT OFF;
Ofte stilte spørsmål og svar
Q # 1) Hva er transaksjonen i PL SQL?
Svar: En transaksjon er en gruppe SQL-beregninger som fungerer som en atomenhet. Alle transaksjonene er av atomart karakter, som enten er begått eller rullestøttet.
Q # 2) Hva er FORPLIKTET i PL SQL?
Svar: En COMMIT-uttalelse brukes til å gjøre en permanent endring i databasen av den nåværende transaksjonen. Det gjør endringene i databasen synlig for brukerne.
Spørsmål 3) Hvordan avslutter du en transaksjon?
Svar: En transaksjon avsluttes med en COMMIT- eller ROLLBACK-uttalelse eksplisitt. Det kan også avsluttes ubetinget etter at en DML-uttalelse er kjørt.
Q # 4) Kan vi begå i en trigger?
Svar: Ja, vi kan bare begå i trigger hvis den trigger-transaksjonen er frittstående fra den overordnede transaksjonen.
Sp # 5) Er SELECT en transaksjon?
Svar: Ja, SELECT er en transaksjon som har alle egenskapene til en transaksjon.
Sp # 6) Hvordan tilbakestiller jeg en transaksjon i Oracle?
Svar: Vi må kjøre en ROLLBACK-uttalelse for å tilbakebetale en transaksjon i Oracle. Den skal angre alle endringene som er gjort av transaksjonen i databasen, og skal gjenopprettes til opprinnelig tilstand.
Konklusjon
I denne veiledningen har vi diskutert i detalj noen grunnleggende konsepter for PL SQL-transaksjoner som er essensielle for PL SQL-transaksjonsadministrasjon. Vi har dekket følgende emner listet opp nedenfor:
- Transaksjon.
- Bruk av COMMIT i en transaksjon.
- Hva er en TILBAKE i en transaksjon?
- Bruk av ROLLBACK med SAVEPOINT i en transaksjon.
- LÅS bord.
Anbefalt lesing
- PL SQL Tutorial for nybegynnere med eksempler Hva er PL / SQL
- Oracle Database Application Development: Oracle SQL & PL / SQL
- PL SQL-pakke: Oracle PL / SQL-pakkeveiledning med eksempler
- Forskjellen mellom SQL Vs MySQL Vs SQL Server (med eksempler)
- PL SQL Datetime Format: Dato- og klokkeslettfunksjoner i PL / SQL
- Komplett guide til håndtering av PL SQL-unntak med eksempler
- SQL vs NoSQL Nøyaktige forskjeller og vet når du skal bruke NoSQL og SQL
- Oracle Database Tutorial - Hva er Oracle Database?