Transaktioner i SQL - Trin til at udføre transaktioner med eksempler

Indholdsfortegnelse:

Anonim

Introduktion til transaktioner i SQL

En transaktion i SQL, som almindeligvis kaldes betalinger (afsendelse, modtagelse, køb osv.), Men når det kommer til de tekniske felter, er det måden at opdatere den logiske informationsenhed i databasen.

En transaktion er implementeringen af ​​en eller flere ændringer i databasen. Vi kan gruppere flere SQL-forespørgsler og køre på én gang i en transaktion. Alle SQL-forespørgsler ville enten blive udført på én gang, eller alle vil blive rullet tilbage. Det ville kun have to resultater enten succes eller fiasko.

Når transaktionen, når den er begået, ikke kan være en rollback, kan den kun være rollback, hvis transaktionen ikke er begået. MYSQL overfører automatisk ændringerne til databasen, hvis alle forespørgsler udføres med succes. For at udføre ændringerne eksplicit i databasen skal du først deaktivere auto-commit gennem kommandoen -

Syntaks: SET autocommit = 0;

Transaktionens egenskaber

Følgende er de vigtige egenskaber ved transaktionerne, hver transaktion skal følge disse egenskaber

1. Atomicitet

En transaktion skal være atomisk, middelmanipulation skal være afsluttet for en bestemt logisk enhed. Denne egenskab sikrer, at dataændringer finder sted helt ellers rulles transaktionen tilbage.

2. Konsistens

Når transaktionen er afsluttet, vil alle tilgængelige poster være ensartede under hele transaktionen. Denne egenskab sikrer, at databaseegenskab skiftes tilstand efter en vellykket forpligtelse eller ej.

3. Isolering

Isolering henviser til dataforandringer på en bestemt logisk enhed bør ikke påvirke på en anden enhed. Det giver en transaktion mulighed for at udføre uafhængigt.

4. Holdbarhed

Ændringer foretaget under transaktioner skal være permanente i systemet. I tilfælde af en systemfejl sikrer denne egenskab også, at dataændringer finder sted eller ej.

Den ovenfor givne egenskab ved transaktionen er også kendt som ACID-ejendom.

Trin til transaktion

1. Begynd

En transaktion kan forekomme i flere SQL-henrettelser, men alle SQL skal køre på én gang. Hvis en af ​​transaktionerne mislykkes, vil hele transaktionen blive vendt tilbage. Udsagnet om start af transaktionen er “START TRANSACTION”. Begynder forkortelsen til START TRANSACTION.

Syntaks: START TRANSAKTION;

2. Forpligtelse

Forpligter reflekterer permanent ændringerne i databasen. Erklæringen for start af transaktionen er "COMMIT".

Syntaks: COMMIT;

3. Rollback

Rollback bruges til at vende ændringerne tilbage, dvs. posten ændres ikke, den ville være i den forrige tilstand. Erklæringen for start af transaktionen er "ROLLBACK".

Syntaks: ROLLBACK;

4. Savepoint

SAVEPOINT er også en transaktionserklæring. Denne erklæring bruges til at oprette et lagerpunkt i systemet, så ROLLBACK-operationen kan opnå status for gemmepunktet.

5. Slip Savepoint

RELEASE SAVEPOINT er en erklæring, der frigiver det gemte punkt & hukommelse, der forbruges af systemet ved oprettelse af et gemt punkt.

Syntaks: RELEASE SAVEPOINT SP

Bemærkninger - SP er navnet på savepointet, da dette savepoint blev oprettet før transaktionsstart.

6. Indstil transaktion

Kommandoen SET TRANSACTION bruges til at specificere transaktionsattributten, såsom den givne transaktion er en read-only eller read-write session.

Syntaks : SET TRANSACTION (LÆSKRIV | KUN LÆS);

Transaktionen bruges til at udføre de komplekse ændringer i databasen. Det bruges hovedsageligt i bankrelaterede informationsændringer til en relationel database.

Transaktionen understøttes af MYSQL-motor InnoDB. Som standard forbliver auto-commit aktiveret, det er derfor, når enhver SQL-eksekvering, efter at eksekveringsforpligtelser automatisk finder sted.

Transaktioner ved hjælp af SQL

Eksempel 1

Banktransaktion: En konto debiteret for 50000 beløb fra person En sparekonto og indsendte dette beløb til A.

Start transaktion: Denne starttransaktion vil konvertere alle SQL-forespørgsler til en enkelt transaktionsenhed.

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

Denne SQL-forespørgsel trækker beløbet fra den eksisterende kontosaldo.

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

Denne SQL-forespørgsel tilføjer beløbet til brugerlånekontoen.

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

Denne SQL-forespørgsel indsætter en ny post i transaktionsdetaljer-tabellen, denne tabel indeholder detaljerne om alle brugerens transaktioner. Hvis alle forespørgsler udføres med succes, skal COMMIT-kommandoen udføres, da ændringer skal gemmes permanent i databasen.

Forpligtelse: Denne forpligtelseserklæring gemmer ændringer, der påberåbes af en transaktion til databasen. Hvis en af ​​transaktionerne mislykkes under udførelsen, skal ROLLBACK-kommandoen udføres for at vende den komplette transaktion tilbage

Rollback: Rollback finder sted, når en forespørgsel mislykkes under udførelsen.

Eksempel 2

Beholdningstransaktion: I den givne varetabel er 6 artikler tilgængelige.

Udførelse af følgende START TRANSACTION-sætning for at starte transaktionen.

Kør nu kommandoen SET AUTOCOMMIT = 0 ; for at deaktivere auto-commit

Udfør nu følgende erklæring for at fjerne posten fra varetabellen

Nu tilgængelig post i tabellen er 4 dvs. poster, der er midlertidigt fjernet fra tabelelementerne

Nu udfører kommandoen ROLLBACK for at vende ændringerne tilbage, den slettede post ville være tilgængelig i tabelelementerne som tidligere, før transaktionen startes

Igen, hvis du anvender den samme sletteoperation, så vil COMMIT-operation, efter at den ændres, gemmes permanent i databasen

Nu kan vi se, at efter ROLLBACK-kommandoen stadig var posten i en ny tilstand, betyder det, at når COMMIT-operationen er udført, kan ændringer ikke vendes, fordi den permanent foretager ændringer i databasen;

Fordele ved at bruge transaktion i SQL

a) Brug af transaktion forbedrer ydeevnen , når indsættelse af 1000 poster ved hjælp af transaktioner i så fald det ville tage mindre tid end normal indsættelse. Som ved normal transaktion vil hver gang COMMIT finde sted efter hver udførelse af forespørgsel og det vil øge udførelsestiden hver gang, mens der i transaktion ikke er nødvendigt at udføre COMMIT-erklæring efter hver SQL-forespørgsel. COMMIT i slutningen vil afspejle alle ændringer i databasen permanent på én gang. Også hvis du bruger transaktion ville det være meget lettere at vende tilbage til ændringerne end den normale transaktion. ROLLBACK vender tilbage til alle ændringer på én gang og holder systemet i den forrige tilstand.

b) Transaktionen sikrer dataintegritet i den relationelle database. De fleste af databasen bruger flere tabeller til at vedligeholde dataene, og mens der foretages opdateringer, kan der være ændringer i de flere tabeller på det tidspunkt, hvis nogen af ​​SQL-forespørgsler mislykkes, vil transaktionen holde dataene uændrede.

Konklusion

Brug af transaktioner er en bedste praksis i informationsopdatering for en logisk enhed i en relationsdatabase. For transaktionsimplementering skal databasemotor understøtte transaktionen ligesom InnoDB-motor. Transaktionen, som en enhed af SQL-sætninger, kan vendes på én gang ved hjælp af en enkelt ROLLBACK-sætning. Transaktion sikrer dataintegriteten og forbedrer databasens ydeevne.

Anbefalede artikler

Dette er en guide til Transaktioner i SQL. Her diskuterer vi introduktion, egenskaber, trin, eksempler på transaktioner i SQL sammen med fordelene ved at bruge transaktion i SQL.

  1. Hvad er SQL
  2. SQL-styringsværktøjer
  3. SQL Views
  4. Typer af sammenføjninger i SQL Server
  5. Top 6 typer sammenføjninger i MySQL med eksempler