logo

SQL-TRANSAKTIONER

Transaktioner grupperar en uppsättning uppgifter i en enda exekveringsenhet. Varje transaktion börjar med ett specifikt jobb och slutar när alla uppgifter i gruppen har slutförts. Om någon av uppgifterna misslyckas misslyckas transaktionen. Därför har en transaktion bara två resultat: Framgång eller fel .

Exempel på en transaktion för att överföra 0 från konto A till konto B:

1. read(A) 2. A:= A – 150 3. write(A) 4. read(B) 5. B:= B + 150 6. write(B)>

Ofullständiga steg leder till att transaktionen misslyckas. En databastransaktion måste per definition vara atomär, konsekvent, isolerad och hållbar.
Dessa kallas i folkmun SYRA egenskaper. Dessa egenskaper kan säkerställa att flera transaktioner utförs samtidigt utan konflikt.



Transaktionens egenskaper

  • Atomicitet: Resultatet av en transaktion kan antingen vara helt framgångsrikt eller helt misslyckat. Hela transaktionen måste återställas om en del av den misslyckas.
  • Konsistens: Transaktioner upprätthåller integritetsbegränsningar genom att flytta databasen från ett giltigt tillstånd till ett annat.
  • Isolering: Samtidiga transaktioner är isolerade från varandra, vilket säkerställer att data är korrekta.
  • Varaktighet: När en transaktion väl har genomförts förblir dess ändringar i kraft även i händelse av ett systemfel.

Hur implementerar man Transaction Control Command med SQL?

Följande kommandon används för att kontrollera transaktioner. Det är viktigt att notera att dessa satser inte kan användas när du skapar tabeller och endast används med DML-kommandon som t.ex. FÖRA IN , UPPDATERING , och RADERA .

Kommandot BEGIN TRANSACTION

Det indikerar startpunkten för en explicit eller lokal transaktion.

Syntax:

BEGIN TRANSACTION transaktionsnamn ;

SET TRANSACTION Kommando

Värdena för egenskaperna för den aktuella transaktionen, såsom transaktionsisoleringsnivån och åtkomstläget, ställs in med hjälp av SET TRANSACTION Statement i MySQL.

Syntax:

SÄTT TRANSAKTION [ LÄS SKRIV | LÄS ENDAST ];

COMMIT kommando

Om allt är i sin ordning med alla uttalanden inom en enda transaktion, alla ändringar registreras tillsammans i databasen anropas engagerad . Kommandot COMMIT sparar alla transaktioner i databasen sedan det senaste COMMIT- eller ROLLBACK-kommandot.

Syntax:

BEGÅ;

Exempel:

Exempeltabell 1

produktion

produktion

Följande är ett exempel som skulle ta bort de poster från tabellen som har ålder = 20 och sedan COMMIT ändringarna i databasen.

konvertera sträng till datum

Fråga

DELETE FROM Student WHERE AGE = 20; COMMIT;>

Produktion

Således skulle två rader från tabellen raderas och SELECT-satsen skulle se ut så här:

produktion

produktion

ROLLBACK Kommando

Om något fel uppstår med någon av de grupperade SQL-satserna måste alla ändringar avbrytas. Processen att vända förändringar kallas rulla tillbaka . Detta kommando kan endast användas för att ångra transaktioner sedan det senaste COMMIT- eller ROLLBACK-kommandot utfärdades.

Syntax för kommandot ROLLBACK:

RULLA TILLBAKA;

Exempel:

Från exemplet ovan Exempeltabell 1 ,
Ta bort de poster från tabellen som har ålder = 20 och ROLLBACK sedan ändringarna i databasen.

Fråga

DELETE FROM Student WHERE AGE = 20; ROLLBACK;>

Produktion

produktion

produktion

SAVEPOINT kommando

Räddningspunkt skapar punkter inom grupperna av transaktioner för att ROLLBACK.
En SAVEPOINT är en punkt i en transaktion där du kan rulla tillbaka transaktionen till en viss punkt utan att rulla tillbaka hela transaktionen.

Syntax för kommandot Savepoint:

SAVEPOINT SAVEPOINT_NAME;

Detta kommando används endast för att skapa SAVEPOINT bland alla transaktioner.
I allmänhet används ROLLBACK för att ångra en grupp av transaktioner.

Syntax för att gå tillbaka till kommandot Savepoint:

ROLLBACK TILL SAVEPOINT_NAME;

du kan ROLLBACK till valfri SAVEPOINT när som helst för att återställa lämplig data till sitt ursprungliga tillstånd.

Exempel:

Från exemplet ovan Exempeltabell 1 , Ta bort de poster från tabellen som har ålder = 20 och ROLLBACK sedan ändringarna i databasen genom att behålla Savepoints.

Fråga

SAVEPOINT SP1; //Savepoint created. DELETE FROM Student WHERE AGE = 20; //deleted SAVEPOINT SP2; //Savepoint created.>

Här skapas SP1 först SAVEPOINT före radering. I detta exempel har en radering skett.
Efter radering igen skapas SAVEPOINT SP2.

Produktion

produktion

produktion

Borttagning har skett, låt oss anta att du har ändrat dig och bestämt dig för att ROLLBACK till SAVEPOINT som du identifierade som SP1 som var före raderingen.
raderingen ångras av detta uttalande.

Fråga

ROLLBACK TO SP1; //Rollback completed>

Produktion

produktion

produktion

RELEASE SAVEPOINT Kommando

Detta kommando används för att ta bort en SAVEPOINT som du har skapat.

Syntax:

RELEASE SAVEPOINT SAVEPOINT_NAME

När en SAVEPOINT väl har släppts kan du inte längre använda kommandot ROLLBACK för att ångra transaktioner som utförts sedan den senaste SAVEPOINT.
Den används för att initiera en databastransaktion och används för att specificera egenskaperna för transaktionen som följer.

Slutsats

  • SQL-satser grupperas tillsammans med hjälp av transaktioner.
  • De lovar att antingen görs alla ändringar eller inga alls.
  • Tillförlitligheten säkerställs av SYRA-egenskaperna atomicitet, konsistens, isolering och hållbarhet.
  • Starta en transaktion med BEGIN TRANSACTION och avsluta den med COMMIT eller ROLLBACK för att slutföra eller ångra ändringar.