MySQL -transaksjoner

MySQL -transaksjoner
En transaksjon er en samtidig samling av funksjoner for å manipulere datasett og utføres som om det var en enkelt enhet med arbeid. I andre termer kan en transaksjon aldri oppnås før hver enkelt prosess er vellykket inne i enheten. Hele prosessen vil kollapse hvis noen transaksjon i prosessen krasjer. Flere SQL -spørsmål er klubbet i en enhet, og alle av dem vil bli utført sammen som en del av transaksjonen. Hver gang en transaksjon inneholder flere oppdateringer i en database, og transaksjonen er begått, fungerer alle modifikasjonene, eller alle oppdateringene blir omgjort når operasjonen rulles tilbake.

Transaksjonsegenskaper

Transaksjoner, ofte kjent under begrepet SYRE, har fire hovedegenskaper.

  • Atomicity: Dette garanterer at alle oppgaver i arbeidsenheten blir fullført med hell; ellers, bare ved feilpunktet, blir prosessen avsluttet, og tidligere prosesser blir gjenopprettet til sin gamle stat.
  • Konsistens: Dette betyr at databasen oppdateres på en tilstrekkelig engasjert prosess.
  • Isolering: Det hjelper transaksjoner til å jobbe med hverandre og individuelt og transparent.
  • Varighet: Dette sørger for at i tilfelle et systemfordeling, beholder resultatet eller konsekvensen av en engasjert transaksjon.

MySQL -transaksjoner som fungerer:

Innenfor MySQL brukes de to begrepene, forpliktelse og tilbakeføring først og fremst bare for MySQL -transaksjoner. Transaksjonene starter bare med BEGIN -erklæring og avslutt. SQL -instruksjonene utgjør størstedelen av transaksjonen blant både start- og stopp -uttalelsene. Slike begivenhetsserier er uavhengig av det spesifikke programmeringsspråket som brukes. Du vil lage en passende vei på hvilket språk du bruker for å bygge applikasjonen. SQL -setningene nedenfor kan implementeres ved hjelp av MySQL Query () -funksjonen.

  • BEGYNNE: Start prosessen eller transaksjonen din ved å tilby innledningen av SQL -instruksjonene.
  • Legg til SQL -kommando: Én eller enda flere SQL -setninger som henholdsvis SELECT, Sett inn, oppdatering og slett. Bekreft selv om det ikke er noen feil, og alt er i samsvar med forventningene dine.
  • BEGÅ: Forpliktelsesinstruksjonen må pålegges etter at en vellykket transaksjon er utført, slik at endringene til alle de tilknyttede tabellene kan ta full effekt.
  • Rollback: Hvis en funksjonsfeil oppstår, er det faktisk aktuelt å sende en tilbakevendingsinstruksjon for å tilbakestille hver tabell som er spesifisert i transaksjonen mot sin tidligere tilstand.
  • Autocommit: Som standard bruker MySQL modifikasjonene permanent på en database. Hvis AutoCommit er satt til 1 (standard), antas hver SQL -spørring (enten det er inne i en transaksjon eller ikke) eller ikke) å være en fullført transaksjon og begått til den er fullført som standard. For å unngå automatisk forpliktelse, sett AutoCommit til 0.

Eksempel 01: AutoCommit -modus på:

MySQL opererer med AutoCommit -fasen tillatt gjennom standard. Det sikrer at MySQL lagrer endringene på disken for å lage den evig så lenge vi kjører en spørring som justerer (endrer) en tabell. Det er ikke nødvendig å snu trekket tilbake. La oss prøve med AutoCommit på modus. Åpne MySQL-kommandolinjeskallet og skriv passordet ditt for å begynne.

Ta et eksempel på en tabell 'bok' som er opprettet i en database 'data'. Akkurat nå har vi ikke utført noen spørsmål om det ennå.

>> Velg * fra data.bok;

Steg 2: Denne prosessen er å oppdatere tabellen 'bok'. La oss oppdatere verdien av kolonnen 'Forfatter' der 'navnet' til en bok er 'hjem'. Du kan se at endringer er gjort med hell.

>> Oppdater data.boksett forfatter = 'cristian steward' hvor name = 'hjem';

Ved å ha et glimt av det oppdaterte tabellen, har vi en modifisert verdi av forfatteren der 'Name' er 'Home'.

>> Velg * fra data.bok;

La oss bruke Rollback -kommandoen for å tilbakestille endringene ved å legge til spørringen nedenfor. Du kan se at Rollback -spørringen ikke fungerer her, da det viser at '0 rader berørt'.

>> Rollback;

Du kan til og med se bordet også. Tabellen har ingen endringer etter utførelsen av tilbakeslagsuttalelsen så langt. Dette betyr at tilbakeslaget ikke fungerer når vi har autokommitert på som standard.

>> Velg * fra data.bok;

Eksempel 02: AutoCommit -modus av:

La oss prøve med AutoCommit Off -modus for å tilbakestille endringene, la oss prøve med AutoCommit Off -modus. Ved å bruke det samme eksemplet på tabellen 'bok', vil vi utføre noen endringer på den. Vi vil bruke starttransaksjonserklæringen for å deaktivere dens auto-commit-fase eller bare skrive inn kommandoen nedenfor for å sette AutoCommit av.

>> Sett AutoCommit = 0;

La oss si at vi har den samme tabellen 'bok' i vår database, og vi må gjøre endringer i den. Deretter vende tilbake disse endringene til de gamle igjen.

>> Velg * fra data.bok;

Hvis du ikke har slått av AutoCommit -modus, må du starte en starttransaksjonsspørsmål i kommandolinjeskallet som nedenfor.

>> Start transaksjon;

Vi vil oppdatere den samme tabellen ved å bruke oppdateringskommandoen ved å sette 'forfatteren' som 'Aliana' der 'navnet' på en bok er 'drøm'. Gjør det ved å bruke kommandoen nedenfor. Du vil se at endringene vil bli gjort vellykket og effektivt.

>> Oppdater data.boksett autho = 'aliana' hvor navn = 'drøm';

La oss sjekke om spørringen ovenfor har fungert perfekt og gjort endringer i tabellen eller ikke. Du kan sjekke den oppdaterte tabellen ved å bruke kommandoen nedenfor som alltid.

>> Velg * fra data.bok;

Du kan se at spørringen har fungert bra, som vist nedenfor.

Nå er det en sving av Rollback -kommandoen for å utføre sin funksjon. Prøv Rollback -kommandoen i kommandolinjen for å rulle tilbake den nylige oppdateringen til tabellen.

>> Rollback;

La oss sjekke om tilbakeslagsspørsmålet har blitt fungert som det skal fungere eller ikke. For dette må du sjekke tabellen 'bok' igjen ved å bruke 'Select' -kommandoen som alltid.

>> Velg * fra data.bok;

Du kan se fra utgangen nedenfor at Rollback endelig har fungert. Det har tilbakeført endringene som er gjort av oppdateringsspørsmålet på denne tabellen.

Konklusjon:

Det er alt for MySQL -transaksjoner. Jeg håper denne guiden vil hjelpe deg å utføre MySQL -transaksjoner praktisk.