logo

SQL-TRANSACTIES

Een SQL-transactie is een reeks van een of meer SQL-bewerkingen (bijv.INSERT UPDATE DELETE) uitgevoerd als één werkeenheid. Transacties zorgen ervoor dat alle bewerkingen slagen of dat er geen worden toegepast, waardoor de gegevensintegriteit behouden blijft.

Belangrijkste eigenschappen van SQL-transacties: ACID

De integriteit van SQL-transacties wordt bepaald door de ACID-eigenschappen die betrouwbare databasetransacties garanderen. Deze vier eigenschappen werken samen om te garanderen dat de database consistent en betrouwbaar blijft.

  • Atomiciteit: De uitkomst van een transactie kan volledig succesvol of volledig mislukt zijn. De hele transactie moet worden teruggedraaid als een deel ervan mislukt.
  • Samenhang: Transacties handhaven integriteitsbeperkingen door de database van de ene geldige status naar de andere te verplaatsen.
  • Isolatie: Gelijktijdige transacties worden van elkaar geïsoleerd, waardoor de nauwkeurigheid van de gegevens wordt gegarandeerd.
  • Duurzaamheid: Zodra een transactie is vastgelegd, blijven de wijzigingen van kracht, zelfs in het geval van een systeemstoring.

SQL-transactiecontroleopdrachten

In SQL beheren transactiecontroleopdrachten de uitvoering van SQL-bewerkingen die de integriteit en betrouwbaarheid van databasetransacties garanderen. Deze opdrachten helpen bij het beheren van de start-commit en het terugdraaien van wijzigingen die in de database zijn aangebracht. Hieronder vindt u de belangrijkste transactiecontroleopdrachten in SQL, uitgelegd met syntaxis en voorbeelden voor elk.



1. BEGIN TRANSACTIE Commando

DeBEGIN TRANSACTIONcommando markeert het begin van een nieuwe transactie. Alle SQL-instructies die op deze opdracht volgen, zullen deel uitmaken van dezelfde transactie totdat aCOMMIT of ROLLBACK wordt aangetroffen. Deze opdracht brengt geen wijzigingen aan in de database, maar start alleen de transactie.

Syntaxis:

BEGIN TRANSACTION transaction_name ;

Voorbeeld van een SQL-transactie met een bankoverboekingsscenario

Laten we eens kijken naar een voorbeeld van een bankoverboeking tussen twee rekeningen. Dit voorbeeld demonstreert het gebruik van meerdere query's in één transactie.

BEGIN TRANSACTION;  

-- Deduct 0 from Account A
UPDATE Accounts
SET Balance = Balance - 150
WHERE AccountID = 'A';

-- Add 0 to Account B
UPDATE Accounts
SET Balance = Balance + 150
WHERE AccountID = 'B';

-- Commit the transaction if both operations succeed
COMMIT;

Als er een fout optreedt, zoals een probleem met deUPDATEvraag die u kunt gebruikenROLLBACKom alle wijzigingen die tijdens de transactie zijn aangebracht ongedaan te maken:

ROLLBACK;

Dit zorgt ervoor dat het systeem niet in een inconsistente situatie terechtkomt, zoals het aftrekken van geld van de ene rekening zonder het aan een andere toe te voegen.

BEGIN TRANSACTION TransferFunds;

2. COMMIT-opdracht

DeCOMMITcommando wordt gebruikt om alle wijzigingen die tijdens de huidige transactie zijn aangebracht in de database op te slaan. Zodra een transactie is vastgelegd, zijn de wijzigingen permanent. 

Syntaxis:

COMMIT;

Voorbeeld

Hier is het monsterStudenttabel die zal worden gebruikt om de bewerkingen in dit voorbeeld uit te voeren. Deze tabel bevat basisgegevens van de leerling, zoals de leeftijd van de ID-naam en andere relevante informatie die met behulp van verschillende gegevens zal worden gemanipuleerd opdrachten voor transactiecontrole.

uitgang' title=Studententafel

Hieronder volgt een voorbeeld waarbij de records met leeftijd = 20 uit de tabel worden verwijderd en vervolgens de wijzigingen in de database worden COMMIT. 

DELETE FROM Student WHERE AGE = 20;  
COMMIT;

Uitvoer

uitgang' loading='lazy' title=uitgang

3. ROLLBACK-opdracht

DeROLLBACKcommando wordt gebruikt om alle wijzigingen die in de huidige transactie zijn aangebracht ongedaan te maken. Het wordt gebruikt wanneer er een fout optreedt of wanneer de gewenste wijzigingen niet kunnen worden voltooid. De database keert terug naar de staat waarin deze zich bevond vóór de BEGIN TRANSACTION werd geëxecuteerd.

probeer java te vangen

Syntaxis:

ROLLBACK;

Voorbeeld

Verwijder de records uit de tabel met leeftijd = 20 en ROLLBACK vervolgens de wijzigingen in de database. In dit geval de DELETE De bewerking wordt ongedaan gemaakt en de wijzigingen in de database worden niet opgeslagen.

DELETE FROM Student WHERE AGE = 20;  
ROLLBACK;

Uitgang:

uitgang' loading='lazy' title=uitgang

4. SAVEPOINT-opdracht

ASAVEPOINTwordt gebruikt om een controlepunt binnen een transactie. We kunnen teruggaan naar een specifiek puntSAVEPOINTin plaats van de gehele transactie terug te draaien. Hierdoor kunnen we een deel van de transactie ongedaan maken de gehele transactie.

Syntaxis:

SAVEPOINT SAVEPOINT_NAME;

Voorbeeld

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

Uitgang:

uitgang' loading='lazy' title=uitgang

Uitleg:

Uit het bovenstaande voorbeeld Voorbeeldtabel1 Verwijder de records uit de tabel met leeftijd = 20 en ROLLBACK vervolgens de wijzigingen in de database door Savepoints te behouden. Hier wordt SP1 eerst SAVEPOINT gemaakt voordat het wordt verwijderd. In dit voorbeeld heeft er één verwijdering plaatsgevonden. Na het opnieuw verwijderen wordt SAVEPOINT SP2 aangemaakt. 

5. TERUG NAAR OPSLAGPUNT

DeROLLBACK TO SAVEPOINTMet deze opdracht kunnen we de transactie terugdraaien naar een specifiek opslagpunt, waardoor wijzigingen die na dat punt zijn aangebracht, effectief ongedaan worden gemaakt.

Syntaxis:

ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;

Voorbeeld

De verwijdering heeft plaatsgevonden. Laten we aannemen dat we van gedachten zijn veranderd en hebben besloten om terug te keren naar het SAVEPOINT dat we hebben geïdentificeerd als SP1 en dat zich vóór de verwijdering bevindt. Dus in dit geval deDELETEDe bewerking wordt ongedaan gemaakt en de transactie keert terug naar de staat waarin deze zich bevondSP1opslagpunt.

ROLLBACK TO SP1;  
//Rollback completed

Uitgang:

uitgang' loading='lazy' title=uitgang

6. RELEASE SAVEPOINT-opdracht

Deze opdracht wordt gebruikt om een ​​SAVEPOINT te verwijderen die we hebben gemaakt. Zodra een SAVEPOINT is vrijgegeven, kunnen we de ROLLBACK niet langer gebruiken commando om transacties ongedaan te maken die zijn uitgevoerd sinds het laatste SAVEPOINT. Het wordt gebruikt om een ​​databasetransactie te initiëren en om kenmerken van de daaropvolgende transactie te specificeren. 

Syntaxis:  

RELEASE SAVEPOINT SAVEPOINT_NAME;

Voorbeeld

Eenmaal het opslagpuntSP2is vrijgegeven, kunnen we er niet meer naar terugkeren.

RELEASE SAVEPOINT SP2; -- Release the second savepoint.

Waarom transacties gebruiken in het bankwezen?

In dit geval riskeert u zonder transactie scenario's waarin geld van de ene rekening wordt afgetrokken, maar niet wordt toegevoegd aan de andere, waardoor het systeem in een inconsistente staat verkeert. Transacties zorgen ervoor dat dergelijke problemen worden vermeden door te garanderen dat beide operaties samen slagen of mislukken.

Soorten SQL-transacties

Er zijn verschillende soorten transacties, afhankelijk van hun aard en de specifieke bewerkingen die ze uitvoeren:

  • Transacties lezen : Wordt normaal gesproken alleen gebruikt om de gegevens te lezen SELECT vragen.
  • Transacties schrijven : Deze omvatten het wijzigen van de gegevens in de database met INSERT UPDATEofDELETEoperaties.
  • Gedistribueerde transacties : Deze transacties omvatten meerdere databases en zorgen voor consistentie tussen deze databases.
  • Impliciete transacties : automatisch gestart door SQL Server voor bepaalde bewerkingen.
  • Expliciete transacties : Handmatig gecontroleerde transacties waarbij de gebruiker de transactie begint en beëindigt met behulp vanBEGIN TRANSACTION COMMITEnROLLBACK.

Bewaken en optimaliseren van SQL-transacties

Om de prestaties op peil te houden en problemen te voorkomen, kunt u de volgende technieken overwegen:

1. Monitorsloten : Volg vergrendelingsgedrag en pas query's aan om vergrendelingsconflicten te minimaliseren.

2. Beperk de reikwijdte van de transactie : Beperk het aantal rijen of records waarop een transactie betrekking heeft om de verwerking te versnellen.

3. Gebruik batchverwerking : Als u grote hoeveelheden gegevens verwerkt, verdeelt u de bewerkingen in kleinere transacties of batches om te voorkomen dat het systeem overbelast raakt.

Voorgestelde quiz Quiz bewerken 5 vragen

Welk van de volgende scenario's beschrijft het beste een schending van de eigenschap 'Isolatie' in ACID?

  • A

    Een transactie verlaat de database in een staat die een primaire sleutelbeperking schendt.

  • B

    Twee transacties die gelijktijdig worden uitgevoerd, lezen en schrijven naar dezelfde gegevens, wat tot inconsistente resultaten leidt.

  • C

    Een gebruiker werkt een record succesvol bij, maar een systeemcrash wist de wijziging.

  • D

    Een transactie mislukt halverwege en alle wijzigingen worden teruggedraaid.

Uitleg:

Dit is een klassiek voorbeeld van een isolatieschending waarbij de tussenliggende status van de ene transactie zichtbaar is voor een andere.

Bij een banktoepassing houdt een overboeking in dat de ene rekening wordt gedebiteerd en de andere wordt gecrediteerd. Welke ACID-eigenschap zorgt ervoor dat beide bewerkingen worden voltooid of geen van beide?

  • A

    Isolatie

  • B

    Atomiciteit

  • C

    Duurzaamheid

  • D

    Samenhang

Uitleg:

Atomicity zorgt ervoor dat alle handelingen binnen een transactie succesvol worden afgerond; anders wordt de hele transactie teruggedraaid.

Er wordt een transactie uitgevoerd en er wordt een 'COMMIT' uitgegeven. Onmiddellijk nadat er een stroomstoring is opgetreden. Welke ACID-eigenschap garandeert dat de wijzigingen die door de transactie zijn aangebracht, nog steeds aanwezig zijn nadat het systeem opnieuw is opgestart?

  • A

    Samenhang

  • B

    Atomiciteit

  • C

    Duurzaamheid

  • D

    Isolatie

Uitleg:

Duurzaamheid is de eigenschap die ervoor zorgt dat een transactie die eenmaal is uitgevoerd, zo blijft, zelfs in het geval van een stroomstoring of een systeemcrash.

Wat is het primaire doel van het 'SAVEPOINT'-commando in een transactie?

  • A

    Om een ​​deel van de transactie vast te leggen.

  • B

    Om een ​​punt in een transactie te markeren waarnaar u later kunt terugkeren.

  • C

    Om de status van de transactie permanent op te slaan.

  • D

    Om de transactie te beëindigen en alle wijzigingen permanent te maken.

Uitleg:

'SAVEPOINT' maakt gedeeltelijke rollbacks binnen een transactie mogelijk.

Beschouw de volgende transactie: 'START TRANSACTIE; INSERT ...; BESPAARPUNT A; UPDATE ...; BESPAARPUNT B; VERWIJDEREN ...; TERUG NAAR OPSLAGPUNT A;' Wat is de status van de transactie na het 'ROLLBACK'-commando?

  • A

    De gehele transactie wordt teruggedraaid.

  • B

    Alleen de 'DELETE' wordt ongedaan gemaakt.

  • C

    Er treedt een fout op omdat u niet kunt teruggaan naar een opslagpunt dat niet het meest recente is.

  • D

    De 'INSERT' wordt opgeslagen, maar de 'UPDATE' en 'DELETE' worden ongedaan gemaakt.

Uitleg:

Terugdraaien naar 'SAVEPOINT A' maakt alle wijzigingen ongedaan die na dat savepoint zijn aangebracht, namelijk 'UPDATE' en 'DELETE'.

SQL-TRANSACTIESQuiz succesvol afgerond Jouw score:  2/5Nauwkeurigheid : 0%Log in om uitleg te bekijken 1/5 1/5 < Previous Volgende >