Svojstva transakcije
Transakcije, često poznate pod tim pojmom KISELINA, imaju četiri glavna opća svojstva.
- Valentnost: To jamči da će svi zadaci unutar radne jedinice biti uspješno izvršeni; inače, samo na mjestu kvara, proces se završava i prethodni procesi se vraćaju u svoje staro stanje.
- Dosljednost: To znači da se nakon dovoljno angažiranog postupka baza podataka ažurira na odgovarajući način.
- Izolacija: Pomaže transakcijama u međusobnoj suradnji, pojedinačno i transparentno.
- Izdržljivost: To osigurava da se u slučaju kvara sustava zadrži ishod ili posljedica počinjene transakcije.
MySQL transakcije rade:
Unutar MySQL-a, dva pojma „Obvršavanje“ i „Vraćanje unatrag“ primarno se koriste samo za MySQL transakcije. Transakcije započinju samo s BEGIN WORK deklaracijom i završavaju COMMIT deklaracijom ili ROLLBACK deklaracijom. SQL upute obuhvaćaju većinu transakcija i između naredbi za pokretanje i zaustavljanje. Takve serije događaja su neovisne o specifičnom programskom jeziku koji se koristi. Napravit ćete prikladan put na bilo kojem jeziku koji koristite za izgradnju aplikacije. Sljedeći SQL izrazi mogu se implementirati pomoću značajke mysql query ().
- POČETI: Započnite svoj postupak ili transakciju pružanjem uputa BEGIN WORK SQL.
- Dodajte naredbu SQL: jedan ili čak više SQL izraza kao što su SELECT, INSERT, UPDATE i DELETE. Potvrdite čak i ako nema pogreške i ako je sve u skladu s vašim očekivanjima.
- POČINITI: Uputa COMMIT mora se nametnuti nakon što je izvršena uspješna transakcija, tako da izmjene svih pridruženih tablica mogu imati puni učinak.
- VRAĆANJE: Ako se dogodi kvar, doista je prikladno poslati naredbu ROLLBACK za vraćanje svake tablice navedene u transakciji u prethodno stanje.
- AUTOCOMMIT: Prema zadanim postavkama MySQL modifikacije trajno primjenjuje na bazu podataka. Ako je AUTOCOMMIT postavljeno na 1 (standardno), pretpostavlja se da je svaki SQL upit (bez obzira nalazi li se unutar transakcije) dovršena transakcija i počinjen dok ne bude dovršen prema zadanim postavkama. Da biste izbjegli automatsko urezivanje, postavite AUTOCOMMIT na 0.
Primjer 01: Uključen način automatskog predavanja:
MySQL radi s fazom Autocommit dopuštenom prema zadanim postavkama. Osigurava da MySQL sprema promjene na disk kako bi ih trajno stvarao sve dok pokrenemo upit koji prilagođava (mijenja) tablicu. Nije potrebno vratiti potez. Pokušajmo s AUTOCOMMIT on mode. Otvorite ljusku naredbenog retka MySQL i za početak unesite lozinku.
Uzmimo primjer tablice 'knjiga' koja je kreirana u bazi podataka 'podaci'. Trenutno još nismo izvršili nijedan upit za to.
>> ODABERI * IZ podataka.knjiga;
Korak 2: Ovaj je postupak za ažuriranje tablice 'knjiga'. Ažurirajmo vrijednost stupca "Autor" gdje je "Ime" knjige "Početna". Vidite da su promjene uspješno izvršene.
>> AŽURIRANJE podataka.knjiga SET Autor = 'Cristian Steward' WHERE Ime = 'Početna';
Uvidom u ažuriranu tablicu imamo izmijenjenu vrijednost autora gdje je "ime" "Početna".
>> ODABERI * IZ podataka.knjiga;
Upotrijebimo naredbu ROLLBACK za vraćanje promjena jednostavnim dodavanjem upita u nastavku. Možete vidjeti da upit ROLLBACK ovdje ne radi, jer pokazuje da je "0 redaka pogođeno".
>> VRAĆANJE;
Možete vidjeti i tablicu. Tablica do sada nije imala promjena nakon izvršavanja izraza ROLLBACK. To znači da ROLLBACK ne radi kada imamo AUTOCOMMIT uključenu prema zadanim postavkama.
>> ODABERI * IZ podataka.knjiga;
Primjer 02: Isključen način automatskog predavanja:
Da vratimo izvršene promjene, pokušajmo s načinom isključenog AUTOCOMMIT. Koristeći isti primjer tablice 'knjiga', izvršit ćemo neke promjene na njoj. Koristit ćemo deklaraciju START TRANSACTION da deaktiviramo njezinu fazu automatskog urezivanja ili jednostavno upišemo naredbu ispod kako bismo isključili AUTOCOMMIT.
>> SET AUTOCOMMIT = 0;Recimo da imamo istu tablicu 'knjiga' u našoj bazi podataka i moramo je unijeti promjene. Zatim te promjene vratite na stare.
>> ODABERI * IZ podataka.knjiga;
Ako niste isključili način AUTOCOMMIT, započnite s upitom START TRANSACTION u ljusci naredbenog retka kao ispod.
>> POČNI TRANSAKCIJU;
Ažurirat ćemo istu tablicu pomoću naredbe UPDATE postavljanjem "Autor" kao "Aliana" gdje je "Ime" knjige "San". Učinite to pomoću naredbe u nastavku. Vidjet ćete da će se promjene izvršiti uspješno i učinkovito.
>> AŽURIRANJE podataka.knjiga SET Autho = 'Aliana' WHERE Ime = 'San';
Provjerimo je li gornji upit savršeno funkcionirao i je li promijenio tablicu ili nije. Ažuriranu tablicu možete provjeriti pomoću dolje navedene naredbe SELECT kao i uvijek.
>> ODABERI * IZ podataka.knjiga;Možete vidjeti da je upit izvrsno funkcionirao, kao što je prikazano u nastavku.
Sada je red da naredba ROLLBACK izvrši svoju funkciju. Pokušajte naredbu ROLLBACK u naredbenom retku za vraćanje nedavnog ažuriranja u tablicu.
>> VRAĆANJE;
Provjerimo je li upit ROLLBACK obrađen onako kako bi trebao ili ne. Da biste to učinili, morate ponovno provjeriti tablicu 'knjiga' pomoću naredbe 'SELECT' kao i uvijek.
>> ODABERI * IZ podataka.knjiga;Iz donjeg rezultata možete vidjeti da je ROLLBACK napokon uspio. Vratio je promjene izvršene UPDATE upitom na ovoj tablici.
Zaključak:
To je sve za MySQL transakcije. Nadam se da će vam ovaj vodič pomoći da povoljno obavljate MySQL transakcije.