Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Atomiciteit | Acid
Geavanceerde Technieken in SQL

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 gehele 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 uit meer dan één instructie bestaan.

Stel je een scenario voor met twee tabellen:

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

  • de tabel UserLogs met kolommen: account_number, action, timestamp enzovoort. De combinatie van account_number en timestamp vormt de samengestelde primaire sleutel van deze relatie.

Laten we nu een scenario bekijken waarin we een nieuwe bankrekening willen aanmaken en gelijktijdig een logboekvermelding willen genereren om de toevoeging van de nieuwe rekening vast te leggen.
Het is van essentieel belang 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 we dit met een transactie kunnen doen:

-- 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;

In de bovenstaande query gebruiken we het BEGIN-blok om aan te geven dat alle volgende instructies als één eenheid 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 transactiegedeelte 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.

Suggested prompts:

Can you explain what would happen if one of the INSERT statements failed?

How does rollback work in this scenario?

Can you show an example where the transaction fails and is rolled back?

Awesome!

Completion rate improved to 4.35

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 gehele 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 uit meer dan één instructie bestaan.

Stel je een scenario voor met twee tabellen:

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

  • de tabel UserLogs met kolommen: account_number, action, timestamp enzovoort. De combinatie van account_number en timestamp vormt de samengestelde primaire sleutel van deze relatie.

Laten we nu een scenario bekijken waarin we een nieuwe bankrekening willen aanmaken en gelijktijdig een logboekvermelding willen genereren om de toevoeging van de nieuwe rekening vast te leggen.
Het is van essentieel belang 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 we dit met een transactie kunnen doen:

-- 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;

In de bovenstaande query gebruiken we het BEGIN-blok om aan te geven dat alle volgende instructies als één eenheid 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 transactiegedeelte 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