Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Atomiciteit | Acid
SQL-Optimalisatie en Queryfuncties

bookAtomiciteit

Atomiciteit in SQL verwijst naar een van de ACID-eigenschappen, die ervoor zorgt dat we transacties gebruiken bij het opvragen van gegevens met SQL.
In de context van SQL-databases garandeert atomiciteit dat alle bewerkingen binnen een bepaalde logische eenheid worden voltooid, of geen van allen.

Transactieafhandeling in SQL

Belangrijkste kenmerken

  • Rollback: Als een deel faalt (bijvoorbeeld door een fout of schending van een beperking), wordt de volledige transactie teruggedraaid en worden wijzigingen ongedaan gemaakt;

  • Commit: als alle bewerkingen slagen, wordt de transactie vastgelegd en zijn de wijzigingen permanent.

Transacties aanmaken in SQL

In SQL wordt elke individuele instructie beschouwd als een transactie.
We kunnen echter handmatig transacties aanmaken die meer dan één instructie bevatten.

Stel je een scenario voor met twee tabellen:

  • de BankAccounts-tabel, die de volgende kolommen bevat: account_number (Primary Key), account_holder en balance;

  • UserLogs-tabel met kolommen: account_number, action, timestamp enz. De combinatie van account_number en timestamp is een samengestelde primaire sleutel van deze relatie.

In de volgende codevoorbeelden zie je hoe gegevens worden ingevoegd en beheerd in deze tabellen, waarbij atomaire bewerkingen worden gedemonstreerd met echte invoer uit het opgegeven schema.

12
SELECT * FROM BankAccounts;
copy
12
SELECT * FROM UserLogs;
copy

Beschouw nu een scenario waarin het de bedoeling is om een nieuwe bankrekening aan te maken en gelijktijdig een logboekvermelding te genereren om de toevoeging van de nieuwe rekening aan te geven.
Het is essentieel dat deze twee handelingen, het toevoegen van de rekening en het loggen van het evenement, als één logische eenheid worden behandeld en binnen één transactie worden uitgevoerd. Hier volgt een zeer eenvoudig voorbeeld van hoe dit met een transactie kan worden gerealiseerd:

123456789101112131415161718
-- Begin the transaction BEGIN; -- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0 INSERT INTO BankAccounts (account_number, account_holder, balance) VALUES (109, 'Emma Watson', 0); -- Step 2: Add log entry if the account was added -- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109 INSERT INTO UserLogs (account_number, action) VALUES (109, 'New account added'); -- Commit the transaction, making the changes permanent COMMIT; -- Check the result SELECT * FROM BankAccounts; SELECT * FROM UserLogs;
copy

In de bovenstaande query gebruiken we het BEGIN-blok om aan te geven dat alle volgende instructies als één geheel moeten worden beschouwd - als één van deze niet wordt uitgevoerd, mag geen van de instructies worden uitgevoerd.
Het sleutelwoord COMMIT geeft het einde van het transactiebereik aan.

question mark

Wat waarborgt het concept van atomiciteit in de context van databasetransacties?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

bookAtomiciteit

Veeg om het menu te tonen

Atomiciteit in SQL verwijst naar een van de ACID-eigenschappen, die ervoor zorgt dat we transacties gebruiken bij het opvragen van gegevens met SQL.
In de context van SQL-databases garandeert atomiciteit dat alle bewerkingen binnen een bepaalde logische eenheid worden voltooid, of geen van allen.

Transactieafhandeling in SQL

Belangrijkste kenmerken

  • Rollback: Als een deel faalt (bijvoorbeeld door een fout of schending van een beperking), wordt de volledige transactie teruggedraaid en worden wijzigingen ongedaan gemaakt;

  • Commit: als alle bewerkingen slagen, wordt de transactie vastgelegd en zijn de wijzigingen permanent.

Transacties aanmaken in SQL

In SQL wordt elke individuele instructie beschouwd als een transactie.
We kunnen echter handmatig transacties aanmaken die meer dan één instructie bevatten.

Stel je een scenario voor met twee tabellen:

  • de BankAccounts-tabel, die de volgende kolommen bevat: account_number (Primary Key), account_holder en balance;

  • UserLogs-tabel met kolommen: account_number, action, timestamp enz. De combinatie van account_number en timestamp is een samengestelde primaire sleutel van deze relatie.

In de volgende codevoorbeelden zie je hoe gegevens worden ingevoegd en beheerd in deze tabellen, waarbij atomaire bewerkingen worden gedemonstreerd met echte invoer uit het opgegeven schema.

12
SELECT * FROM BankAccounts;
copy
12
SELECT * FROM UserLogs;
copy

Beschouw nu een scenario waarin het de bedoeling is om een nieuwe bankrekening aan te maken en gelijktijdig een logboekvermelding te genereren om de toevoeging van de nieuwe rekening aan te geven.
Het is essentieel dat deze twee handelingen, het toevoegen van de rekening en het loggen van het evenement, als één logische eenheid worden behandeld en binnen één transactie worden uitgevoerd. Hier volgt een zeer eenvoudig voorbeeld van hoe dit met een transactie kan worden gerealiseerd:

123456789101112131415161718
-- Begin the transaction BEGIN; -- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0 INSERT INTO BankAccounts (account_number, account_holder, balance) VALUES (109, 'Emma Watson', 0); -- Step 2: Add log entry if the account was added -- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109 INSERT INTO UserLogs (account_number, action) VALUES (109, 'New account added'); -- Commit the transaction, making the changes permanent COMMIT; -- Check the result SELECT * FROM BankAccounts; SELECT * FROM UserLogs;
copy

In de bovenstaande query gebruiken we het BEGIN-blok om aan te geven dat alle volgende instructies als één geheel moeten worden beschouwd - als één van deze niet wordt uitgevoerd, mag geen van de instructies worden uitgevoerd.
Het sleutelwoord COMMIT geeft het einde van het transactiebereik aan.

question mark

Wat waarborgt het concept van atomiciteit in de context van databasetransacties?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 3
some-alt