Transakcije v SQL - Koraki za izvedbo transakcij s primeri

Kazalo:

Anonim

Uvod v Transakcije v SQL

Transakcija v SQL, splošno znana kot plačevanje (pošiljanje, prejemanje, nakup itd.), Vendar ko gre za tehnična področja, je to način posodobitve logične enote informacij v bazi podatkov.

Transakcija je izvedba ene ali več sprememb v bazi podatkov. Lahko združimo več poizvedb SQL in se hkrati izvajajo v transakciji. Vsa poizvedba SQL bi bila bodisi izvedena naenkrat, bodisi bi se vsa vrnila nazaj. Uspeh ali neuspeh bi imel le dva rezultata.

Transakcija, ki je enkrat storjena, ne more biti povratna, vrniti jo je mogoče le, če transakcija ni zavezana. MYSQL samodejno prevzame spremembe v bazi, če se vse poizvedbe uspešno izvedejo. Če želite izrecno zavezati spremembe v bazi, najprej onemogočite samodejno zavezo s pomočjo ukaza -

Sintaksa: SET autocommit = 0;

Lastnosti transakcije

Sledijo pomembne lastnosti transakcij, vsaka transakcija mora slediti tem lastnostim

1. Atomicnost

Transakcija mora biti atomska, za določeno logično enoto je treba zaključiti povprečno obdelavo podatkov. Ta lastnost zagotavlja, da se spremembe podatkov izvedejo popolnoma drugače, če se transakcija vrne.

2. Doslednost

Ko se transakcija zaključi, bodo vsi razpoložljivi zapisi dosledni v celotni transakciji. Ta lastnost zagotavlja, da je stanje preklopilo lastnost baz podatkov po uspešni potrditvi ali ne.

3. Izolacija

Izolacija se nanaša na spremembe podatkov na določeni logični enoti, ki ne smejo vplivati ​​na drugo enoto. Omogoča samostojno izvedbo transakcije.

4. Trajnost

Spremembe med transakcijami bi morale biti v sistemu stalne. V primeru sistemske napake ta lastnost tudi zagotavlja, da se spremembe podatkov zgodijo ali ne.

Zgoraj navedena lastnost transakcije je znana tudi kot lastnost ACID.

Koraki transakcije

1. Začnite

Transakcija se lahko zgodi v več izvedbah SQL, vendar bi se vsi SQL morali izvajati hkrati. Če katera od transakcij ne uspe, se celotna transakcija razveljavi. Izjava za začetek transakcije je "START TRANSACTION". Začne kratica za START TRANSACTION.

Sintaksa: ZAČETNA TRANSAKCIJA;

2. Zavezo

Odbori trajno odražajo spremembe v bazi. Izjava za začetek posla je „COMMIT“.

Sintaksa: COMMIT;

3. Odvračanje

Povračilo sprememb se uporablja za povrnitev sprememb, tj. Zapis se ne bo spremenil, bil bi v prejšnjem stanju. Izjava za začetek transakcije je "ROLLBACK".

Sintaksa: ROLLBACK;

4. Savepoint

SAVEPOINT je tudi izpisek o transakciji. Ta izjava je bila uporabljena za ustvarjanje shranjevalne točke v sistemu, tako da lahko operacija ROLLBACK doseže stanje shranjevalne točke.

5. Sprostite Savepoint

RELEASE SAVEPOINT je izjava, da sprostite shranjevalno točko in pomnilnik, ki ga sistem porabi pri ustvarjanju točke shranjevanja.

Sintaksa: SPROSTITE SAVEPOINT SP

Opombe - SP je ime varčevalne točke, ko je bila ta varčevalna točka ustvarjena pred začetkom transakcije.

6. Nastavite Transaction

Ukaz SET TRANSACTION se uporablja za določitev atributa transakcije, na primer, da je določena transakcija seja samo za branje ali branje in pisanje.

Sintaksa : SET TRANSACTION (PREBERI-PISI | PREBERI SAMO);

Transakcija se uporablja za izvajanje zapletenih sprememb v bazi podatkov. Večinoma se uporablja pri informacijah, povezanih z bančništvom, v relacijske baze podatkov.

Transakcijo podpira mehanizem MYSQL InnoDB. Samodejno prevzemanje privzeto ostane omogočeno, zato se vsakič, ko se kateri koli SQL izvrši po izvršitvi, samodejno izvede.

Transakcije z uporabo SQL

Primer # 1

Bančna transakcija: račun z bremena 50000 zneska od osebe Varčevalni račun in ta znesek predložen na posojilni račun A.

Začni transakcijo: Ta začetna transakcija bo pretvorila vse poizvedbe SQL v eno enoto transakcije.

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

Ta poizvedba SQL odšteje znesek iz obstoječega stanja na računu.

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

Ta poizvedba SQL doda znesek na račun uporabniškega posojila.

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

Ta poizvedba SQL vstavi nov zapis v tabelo s podrobnostmi o transakcijah, ta tabela vsebuje podrobnosti o vseh transakcijah uporabnikov. Če so vse poizvedbe uspešno izvedene, je treba uvesti COMMIT ukaz, saj je treba spremembe trajno shraniti v bazo podatkov.

Zavezi: Ta izjava o zavezi shrani spremembe, ki jih pri transakciji v bazo podatkov prikličejo. Če katera od transakcij med izvedbo ne uspe, je treba za povrnitev celotne transakcije izvesti ukaz ROLLBACK

Odvrnitev: Povračilo se zgodi, ko kakšna poizvedba med izvedbo ne uspe.

Primer # 2

Transakcija zalog: V dani tabeli izdelkov je na voljo 6 postavk.

Izvedite naslednji stavek START TRANSACTION za začetek transakcije.

Zdaj zaženite ukaz SET AUTOCOMMIT = 0 ; da onemogočite samodejno zavezo

Zdaj izvedite naslednji stavek, da odstranite zapis iz tabele elementov

Zdaj razpoložljivi zapis v tabeli je 4, tj. Zapisi so začasno odstranjeni iz elementov tabele

Zdaj izvedite ukaz ROLLBACK za razveljavitev sprememb, izbrisani zapis bi bil na voljo v elementih tabele, kot je bilo prej, preden začnete transakcijo

Znova, če uporabite isto operacijo brisanja, potem se postopek COMMIT, ko se spremeni, trajno shrani v bazo podatkov

Zdaj lahko vidimo, da je bil po ukazu ROLLBACK zapis še vedno v novem stanju. To pomeni, da, ko operacija COMMIT izvede spremembe, ni mogoče povrniti, ker trajno spreminja v bazo podatkov;

Prednosti uporabe Transaction v SQL

a) Uporaba Transaction izboljša uspešnost , če bi bil vstavljen 1000 zapisov s transakcijami, v tem primeru bi bil čas manjši od običajnega vstavljanja. Kot pri običajni transakciji, bi se vsakič, ko bi se COMMIT zgodil po vsaki izvedbi poizvedbe, povečal čas izvedbe vsakič, ko v transakciji ni treba izvajati stavka COMMIT po vsaki poizvedbi SQL. COMMIT na koncu bi vse spremembe podatkovne baze trajno odražale hkrati. Tudi če uporabljate transakcijo, bi bilo vračilo sprememb veliko lažje kot običajna transakcija. ROLLBACK bo povrnil vse spremembe naenkrat in ohranil sistem v prejšnjem stanju.

b) Transakcija zagotavlja celovitost podatkov v relacijski podatkovni bazi. Večina baz podatkov uporablja več tabel za vzdrževanje podatkov in med posodabljanjem se lahko takrat spremenijo več tabel, če katera koli poizvedba SQL ne bo uspela, bi transakcija ohranila podatke nespremenjene.

Zaključek

Uporaba Transakcij je najboljša praksa pri posodabljanju informacij za logično enoto v relacijski podatkovni bazi. Za izvedbo transakcij bi moral motor podatkovne baze podpirati transakcijo, kot je motor InnoDB. Transakcijo kot enoto stavkov SQL je mogoče naenkrat razveljaviti z enim stavkom ROLLBACK. Transakcija zagotavlja celovitost podatkov in izboljšuje delovanje baze podatkov.

Priporočeni članki

To je vodnik za Transakcije v SQL. Tukaj razpravljamo o uvodu, lastnostih, korakih, primerih transakcij v SQL, skupaj s prednostmi uporabe transakcij v SQL.

  1. Kaj je SQL
  2. Orodja za upravljanje SQL
  3. Pogledi SQL
  4. Vrste združitev v SQL Server
  5. Prvih 6 vrst združitev v MySQL s primeri