Lastnosti transakcije
Transakcije, pogosto znane pod izrazom KISLINA, imajo štiri glavne splošne lastnosti.
- Atomicnost: To zagotavlja, da se vse naloge znotraj delovne enote uspešno zaključijo; v nasprotnem primeru se postopek na koncu okvare zaključi in predhodni procesi se obnovijo v staro stanje.
- Doslednost: To pomeni, da se baza podatkov po dovolj predanem postopku ustrezno posodobi.
- Izolacija: Transakcijam pomaga, da sodelujejo med seboj ter posamično in pregledno.
- Trajnost: To zagotavlja, da se v primeru okvare sistema ohrani rezultat ali posledica predane transakcije.
Delovanje transakcij MySQL:
V MySQL se izraza »Obveži« in »Povrnitev« uporabljata predvsem za transakcije MySQL. Transakcije se začnejo samo z izjavo BEGIN WORK in končajo z izjavo COMMIT ali ROLLBACK. Navodila SQL obsegajo večino transakcije med izhodiščnim in ustavitvenim stavkom. Takšne serije dogodkov so ne glede na uporabljeni specifični programski jezik. Pripravili boste primerno pot v katerem koli jeziku, ki ga uporabljate za izdelavo aplikacije. Spodnje stavke SQL je mogoče implementirati s funkcijo mysql query ().
- ZAČETI: Začnite postopek ali transakcijo z navodili BEGIN WORK SQL.
- Dodaj SQL UKAZ: enega ali celo več stavkov SQL, kot so SELECT, INSERT, UPDATE in DELETE. Potrdite, tudi če ni pomote in je vse v skladu z vašimi pričakovanji.
- OBVEZI: Naredbo COMMIT je treba naložiti po uspešni transakciji, tako da lahko spremembe vseh povezanih tabel začnejo polno veljati.
- VRAČANJE: Če pride do okvare, je res primerno poslati ukaz ROLLBACK, da vrnete vsako tabelo, določeno v transakciji, v njeno prvotno stanje.
- AVTOKOMITA: MySQL spremembe privzeto trajno uporabi v zbirki podatkov. Če je AUTOCOMMIT nastavljen na 1 (standardno), potem se šteje, da je vsaka poizvedba SQL (ne glede na to, ali je znotraj transakcije) dokončana transakcija in se zaveže, dokler ni privzeto dokončana. Če se želite izogniti samodejni predaji, nastavite AUTOCOMMIT na 0.
Primer 01: Način samodejnega oddajanja vklopljen:
MySQL deluje s privzeto dovoljeno fazo Autocommit. Zagotavlja, da MySQL spremembe na disku shrani, da jih trajno ustvarja, dokler zaženemo poizvedbo, ki prilagodi (spremeni) tabelo. Poteze ni treba vrniti nazaj. Poskusimo z načinom AUTOCOMMIT on. Odprite lupino ukazne vrstice MySQL in za začetek vnesite geslo.
Vzemimo primer tabele 'knjiga', ki je bila ustvarjena v bazi podatkov 'podatki'. Trenutno zanj še nismo izvedli nobene poizvedbe.
>> IZBERI * IZ podatkov.knjiga;
2. korak: Ta postopek je posodobitev tabele 'knjiga'. Posodobimo vrednost stolpca 'Avtor', kjer je 'Ime' knjige 'Domov'. Vidite, da so bile spremembe uspešno izvedene.
>> POSODOBI podatke.book SET Avtor = 'Cristian Steward' WHERE Ime = 'Domov';
Z vpogledom v posodobljeno tabelo imamo spremenjeno vrednost avtorja, kjer je "ime" Domača stran.
>> IZBERI * IZ podatkov.knjiga;
Uporabite ukaz ROLLBACK za povrnitev sprememb tako, da preprosto dodate spodnjo poizvedbo. Opazite lahko, da poizvedba ROLLBACK tukaj ne deluje, saj kaže, da je "0 vrstic prizadetih".
>> VRAČANJE;
Ogledate si lahko tudi mizo. Tabela po izvedbi stavka ROLLBACK doslej ni imela sprememb. To pomeni, da ROLLBACK ne deluje, če imamo privzeto vključen AUTOCOMMIT.
>> IZBERI * IZ podatkov.knjiga;
Primer 02: Način samodejnega oddajanja izklopljen:
Če želite povrniti opravljene spremembe, poskusimo z načinom izklopljenega AUTOCOMMIT. Z istim primerom tabele 'book' bomo na njej izvedli nekaj sprememb. Z deklaracijo START TRANSACTION bomo deaktivirali njegovo fazo samodejnega prevzema ali preprosto vtipkali spodnji ukaz, da izklopimo AUTOCOMMIT.
>> NASTAVI AUTOCOMMIT = 0;Recimo, da imamo v svoji bazi podatkov isto tabelo 'knjiga' in jo moramo spremeniti. Nato te spremembe znova vrnite na stare.
>> IZBERI * IZ podatkov.knjiga;
Če še niste izklopili načina AUTOCOMMIT, začnite z poizvedbo START TRANSACTION v lupini ukazne vrstice, kot spodaj.
>> ZAČNI TRANSAKCIJO;
Isto tabelo bomo posodobili z ukazom UPDATE, tako da nastavimo 'Author' kot 'Aliana', kjer je 'Ime' knjige 'Dream'. Naredite to z uporabo spodnjega ukaza. Videli boste, da bodo spremembe izvedene uspešno in učinkovito.
>> POSODOBI podatke.book SET Autho = 'Aliana' WHERE Name = 'Dream';
Preverimo, ali je zgornja poizvedba popolnoma delovala in spremenila tabelo ali ne. Posodobljeno tabelo lahko preverite z uporabo spodnjega ukaza SELECT kot vedno.
>> IZBERI * IZ podatkov.knjiga;Vidite lahko, da je poizvedba odlično delovala, kot je prikazano spodaj.
Zdaj je na vrsti ukaz ROLLBACK za izvajanje svoje funkcije. Poskusite z ukazom ROLLBACK v ukazni vrstici vrniti nedavno posodobitev v tabelo.
>> VRAČANJE;
Preverimo, ali je bila poizvedba ROLLBACK obdelana, kot bi morala, ali ne. Za to morate še enkrat preveriti tabelo 'book' z ukazom 'SELECT' kot vedno.
>> IZBERI * IZ podatkov.knjiga;Iz spodnjega izhoda lahko vidite, da je ROLLBACK končno deloval. Razveljavil je spremembe poizvedbe UPDATE v tej tabeli.
Zaključek:
To je vse za transakcije MySQL. Upam, da vam bo ta vodnik pomagal pri priročnem opravljanju transakcij MySQL.