Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Atomicitet | Acid
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
SQL-optimering og Forespørgselsfunktioner

bookAtomicitet

Atomicitet i SQL refererer til en af ACID-egenskaberne, som sikrer, at vi anvender transaktioner, når vi forespørger data med SQL.
I konteksten af SQL-databaser garanterer atomicitet, at alle operationer inden for en bestemt logisk enhed gennemføres, eller ingen af dem gør.

Transaktionsbehandling i SQL

Nøglefunktioner

  • Rollback: Hvis en del fejler (f.eks. på grund af fejl eller overtrædelse af begrænsninger), rulles hele transaktionen tilbage, og ændringer fortrydes;

  • Commit: hvis alle operationer lykkes, gennemføres transaktionen, og ændringerne bliver permanente.

Oprettelse af transaktioner i SQL

I SQL betragtes hver individuel sætning som en transaktion.
Dog kan vi manuelt oprette transaktioner, der indeholder mere end én sætning.

Forestil dig et scenarie, hvor vi har to tabeller:

  • tabellen BankAccounts, som indeholder følgende kolonner: account_number (Primary Key), account_holder og balance;

  • UserLogs-tabellen med kolonner: account_number, action, timestamp osv. Kombinationen af account_number og timestamp udgør en sammensat primærnøgle for denne relation.

I de næste kodeeksempler vil du se, hvordan data indsættes og håndteres i disse tabeller, hvilket demonstrerer atomare operationer ved hjælp af reelle poster fra det angivne skema.

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

Overvej nu et scenarie, hvor der skal oprettes en ny bankkonto og samtidig genereres en logpost for at markere tilføjelsen af den nye konto.
Det er afgørende, at disse to handlinger, tilføjelse af kontoen og logning af hændelsen, behandles som en enkelt logisk enhed og skal indkapsles i én transaktion. Her er et meget grundlæggende eksempel på, hvordan dette kan gøres med en transaktion:

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

I forespørgslen ovenfor anvendes BEGIN-blokken til at angive, at alle efterfølgende udsagn skal betragtes som en enkelt enhed – hvis én af dem ikke udføres, må ingen af udsagnene udføres.
Nøgleordet COMMIT angiver afslutningen på transaktionsblokken.

question mark

Hvad sikrer begrebet atomicitet i forbindelse med databasetransaktioner?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

Can you explain what would happen if one of the statements in the transaction fails?

How does rollback work in this scenario?

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

bookAtomicitet

Stryg for at vise menuen

Atomicitet i SQL refererer til en af ACID-egenskaberne, som sikrer, at vi anvender transaktioner, når vi forespørger data med SQL.
I konteksten af SQL-databaser garanterer atomicitet, at alle operationer inden for en bestemt logisk enhed gennemføres, eller ingen af dem gør.

Transaktionsbehandling i SQL

Nøglefunktioner

  • Rollback: Hvis en del fejler (f.eks. på grund af fejl eller overtrædelse af begrænsninger), rulles hele transaktionen tilbage, og ændringer fortrydes;

  • Commit: hvis alle operationer lykkes, gennemføres transaktionen, og ændringerne bliver permanente.

Oprettelse af transaktioner i SQL

I SQL betragtes hver individuel sætning som en transaktion.
Dog kan vi manuelt oprette transaktioner, der indeholder mere end én sætning.

Forestil dig et scenarie, hvor vi har to tabeller:

  • tabellen BankAccounts, som indeholder følgende kolonner: account_number (Primary Key), account_holder og balance;

  • UserLogs-tabellen med kolonner: account_number, action, timestamp osv. Kombinationen af account_number og timestamp udgør en sammensat primærnøgle for denne relation.

I de næste kodeeksempler vil du se, hvordan data indsættes og håndteres i disse tabeller, hvilket demonstrerer atomare operationer ved hjælp af reelle poster fra det angivne skema.

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

Overvej nu et scenarie, hvor der skal oprettes en ny bankkonto og samtidig genereres en logpost for at markere tilføjelsen af den nye konto.
Det er afgørende, at disse to handlinger, tilføjelse af kontoen og logning af hændelsen, behandles som en enkelt logisk enhed og skal indkapsles i én transaktion. Her er et meget grundlæggende eksempel på, hvordan dette kan gøres med en transaktion:

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

I forespørgslen ovenfor anvendes BEGIN-blokken til at angive, at alle efterfølgende udsagn skal betragtes som en enkelt enhed – hvis én af dem ikke udføres, må ingen af udsagnene udføres.
Nøgleordet COMMIT angiver afslutningen på transaktionsblokken.

question mark

Hvad sikrer begrebet atomicitet i forbindelse med databasetransaktioner?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 3
some-alt