Transakcije u SQL - Koraci za izvršavanje transakcija s primjerima

Sadržaj:

Anonim

Uvod u Transakcije u SQL-u

Transakcija u SQL-u općenito poznata kao plaćanja (slanje, primanje, kupnja itd.), Ali kada je riječ o tehničkim poljima onda je to način ažuriranja logičke jedinice podataka u bazi podataka.

Transakcija je uvođenje jedne ili više promjena u bazu podataka. Možemo grupirati više SQL upita i pokrenuti se odjednom u transakciji. Svi SQL upiti izvršili bi se u jednom potezu ili bi se svi vratili natrag. Imala bi samo dva ishoda ili uspjeh ili neuspjeh.

Transakcija jednom izvršena ne može biti povratna roba, može se vratiti natrag samo ako transakcija nije izvršena. MYSQL automatski vrši promjene u bazi podataka ako se svi upiti uspješno izvrše. Da biste eksplicitno počinili promjene u bazi podataka, prvo morate onemogućiti automatsko izvršenje naredbe -

Sintaksa: SET autocommit = 0;

Svojstva transakcije

Slijede bitna svojstva transakcija, a svaka transakcija mora slijediti ta svojstva

1. Atomičnost

Transakcija mora biti atomska, za određenu logičku jedinicu treba završiti srednju manipulaciju podacima. Ovo svojstvo osigurava da se promjene podataka u potpunosti izvršavaju na drugi način.

2. Dosljednost

Nakon završetka transakcije, svi dostupni snimci bit će dosljedni tijekom cijele transakcije. Ovo svojstvo osigurava prebacivanje stanja svojstva baze podataka nakon uspješnog izvršavanja ili ne.

3. Izolacija

Izolacija se odnosi na promjene podataka na određenoj logičkoj jedinici koje ne bi trebale utjecati na drugu jedinicu. Omogućuje neovisno izvršavanje transakcije.

4. Trajnost

Promjene izvršene tijekom transakcija trebaju biti trajne u sustavu. U slučaju pogreške sustava, ovo svojstvo također osigurava da se promijene podataka dogodile ili ne.

Gore navedeno svojstvo transakcije poznato je i kao ACID svojstvo.

Koraci transakcije

1. Počnite

Transakcija se može dogoditi u više izvršenja SQL-a, ali svi SQL-ovi trebaju se pokrenuti odjednom. Ako bilo koja od transakcija ne uspije, tada će se cijela transakcija poništiti. Izjava za započinjanje transakcije je "POČETNA TRANSAKCIJA". Počinje kraticom za START TRANSACTION.

Sintaksa: POČETNA TRANSAKCIJA;

2. Obvezati

Radovi trajno odražavaju promjene u bazi podataka. Izjava za započinjanje transakcije je "COMMIT".

Sintaksa: COMMIT;

3. Povratak

Rollback se koristi za vraćanje promjena, tj. Zapis se neće mijenjati, bio bi u prethodnom stanju. Izjava za započinjanje transakcije je "ROLLBACK".

Sintaksa: ROLLBACK;

4. Savepoint

SAVEPOINT je također izvod o transakciji. Ova izjava korištena je za stvaranje točke pohranjivanja u sustavu tako da se operacijom ROLLBACK postigne stanje spasne točke.

5. Otpustite Savepoint

RELEASE SAVEPOINT je izjava za oslobađanje točke uštede i memorije koju sustav troši za stvaranje točke spremanja.

Sintaksa: RELEASE SAVEPOINT SP

Napomene - SP je naziv spasioca kada je ta točka snimanja stvorena prije početka transakcije.

6. Postavite Transaction

Naredba SET TRANSACTION koristi se za određivanje atributa transakcije, kao što je navedena transakcija, samo za čitanje ili za čitanje-pisanje.

Sintaksa : POSTAVI TRANSAKCIJU (PROČITAJ-PISI | PROČITAJ SAMO);

Transakcija se koristi za izvođenje složenih promjena u bazi podataka. Informacije koje se uglavnom koriste u bankarskim informacijama pretvaraju se u relacijsku bazu podataka.

Transakciju podržava MYSQL engine InnoDB. Prema zadanim postavkama, automatsko predavanje ostaje omogućeno, zato se svaki put kad se izvrši bilo koji SQL automatski izvrši.

Transakcije pomoću SQL-a

Primjer 1

Bankovna transakcija: račun zadužen s 50000 iznosa s štednog računa i taj iznos predao na račun zajam A.

Start Transaction: Ova početna transakcija pretvorit će sve SQL upite u jednu jedinicu transakcije.

UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;

Ovaj SQL upit oduzima iznos od postojećeg stanja računa.

UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;

Ovaj SQL upit dodaje iznos na račun korisničkog kredita.

Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');

Ovaj SQL upit ubacuje novi zapis u tablicu podataka o transakcijama, a ova tablica sadrži detalje svih transakcija korisnika. Ako se svi upiti uspješno izvrše, tada se mora izvršiti naredba COMMIT jer promjene trebaju biti trajno pohranjene u bazi podataka.

Obveza: Ova izjava izvršenja sprema promjene koje je pozvala transakcija u bazu podataka. Ako bilo koja od transakcija ne uspije tijekom izvršenja, tada treba izvršiti naredbu ROLLBACK za povratak kompletne transakcije

Povratni postupak: Povratni postupak se događa kada jedan upit ne uspije tijekom izvršavanja.

Primjer 2

Transakcija zaliha: U datoj tablici stavki dostupno je 6 stavki.

Izvođenje sljedeće izjave START TRANSACTION za započinjanje transakcije.

Sada pokrenite naredbu SET AUTOCOMMIT = 0 ; da biste onemogućili automatsko preuzimanje

Sada izvršite sljedeću izjavu za uklanjanje zapisa iz tablice stavki

Sad dostupan zapis u tablici je 4, odnosno zapisi su privremeno uklonjeni iz predmeta tablice

Sada izvršavajući naredbu ROLLBACK za poništavanje promjena, izbrisani zapis bit će dostupan u stavkama tablice kao i prije početka transakcije

Ako ponovo primijenite istu operaciju brisanja, tada će se COMMIT operacija nakon njezinih promjena trajno spremiti u bazu podataka

Sada možemo vidjeti da je nakon naredbe ROLLBACK zapis i dalje bio u novom stanju, što znači da nakon što je COMMIT operacija izvela promjene ne može se vratiti jer trajno unosi promjene u bazu podataka;

Prednosti upotrebe Transakcije u SQL-u

a) Korištenje Transakcije poboljšava performanse , kad bi umetanje 1000 zapisa pomoću transakcija u tom slučaju trajalo manje od uobičajenog umetanja. Kao i u uobičajenoj transakciji, svaki put kada bi se COMMIT odvijao nakon svakog izvršavanja upita, povećavao bi se vrijeme izvršenja svaki put, dok u transakciji nema potrebe za izvršavanjem COMMIT izraza nakon svakog SQL upita. COMMIT na kraju će odjednom trajno odraziti sve promjene u bazi podataka. Također ako koristite transakciju, poništavanje promjena bilo bi puno lakše nego kod uobičajene transakcije. ROLLBACK će vratiti sve promjene odjednom i zadržati sustav u prethodnom stanju.

b) Transakcija osigurava integritet podataka u relacijskoj bazi podataka. Većina baza podataka koristi više tablica za održavanje podataka i tijekom ažuriranja mogu se tada dogoditi promjene u više tablica ako bilo koji od SQL upita ne uspije, transakcija će podatke zadržati nepromijenjene.

Zaključak

Korištenje Transakcija je najbolja praksa u ažuriranju podataka za logičku jedinicu u relacijskoj bazi podataka. Za implementaciju transakcija motor baze podataka trebao bi podržati transakciju poput InnoDB motora. Transakcija, kao jedinica SQL izraza, može se zaustaviti odjednom koristeći jednu ROLLBACK izjavu. Transakcija osigurava integritet podataka i poboljšava rad baze podataka.

Preporučeni članci

Ovo je vodič za Transakcije u SQL-u. Ovdje smo raspravljali o uvodu, svojstvima, koracima, primjerima transakcija u SQL-u, kao i prednostima korištenja transakcija u SQL-u.

  1. Što je SQL
  2. Alati za upravljanje SQL-om
  3. SQL prikazi
  4. Vrste pridruživanja u SQL Serveru
  5. Top 6 vrsta pridruživanja u MySQL-u s primjerima