Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Atomitet | Acid
Avancerade Tekniker i SQL

bookAtomitet

Atomicitet i SQL avser en av ACID-egenskaperna, vilket säkerställer att vi använder transaktioner när vi frågar efter data med SQL.
I sammanhanget av SQL-databaser garanterar atomicitet att alla operationer inom en viss logisk enhet slutförs, eller ingen av dem gör det.

Transaktionshantering i SQL

Viktiga egenskaper

  • Återställning (Rollback): Om någon del misslyckas (t.ex. på grund av fel eller begränsningsöverträdelse), återställs hela transaktionen och ändringarna tas bort;

  • Bekräftelse (Commit): Om alla operationer lyckas, bekräftas transaktionen och ändringarna blir permanenta.

Skapa transaktioner i SQL

I SQL betraktas varje enskilt kommando som en transaktion.
Vi kan dock manuellt skapa transaktioner som innehåller mer än ett kommando.

Föreställ dig ett scenario där vi har två tabeller:

  • tabellen BankAccounts, som innehåller följande kolumner: account_number (Primary Key), account_holder och balance;

  • UserLogs-tabellen med kolumner: account_number, action, timestamp etc. Kombinationen av account_number och timestamp är en sammansatt primärnyckel för denna relation.

Låt oss nu överväga ett scenario där vi avser att skapa ett nytt bankkonto och samtidigt generera en loggpost för att markera tillägget av det nya kontot.
Det är avgörande att dessa två åtgärder, att lägga till kontot och logga händelsen, behandlas som en enda logisk enhet och måste omslutas i en enda transaktion. Här är ett mycket grundläggande exempel på hur vi kan göra detta med en transaktion:

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

I frågan ovan använder vi BEGIN-blocket för att ange att alla efterföljande satser måste betraktas som en enda enhet – om en av dem inte utförs, får ingen av satserna utföras.
Nyckelordet COMMIT markerar slutet på transaktionsblocket.

question mark

Vad säkerställer begreppet atomicitet i samband med databastransaktioner?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 4.35

bookAtomitet

Svep för att visa menyn

Atomicitet i SQL avser en av ACID-egenskaperna, vilket säkerställer att vi använder transaktioner när vi frågar efter data med SQL.
I sammanhanget av SQL-databaser garanterar atomicitet att alla operationer inom en viss logisk enhet slutförs, eller ingen av dem gör det.

Transaktionshantering i SQL

Viktiga egenskaper

  • Återställning (Rollback): Om någon del misslyckas (t.ex. på grund av fel eller begränsningsöverträdelse), återställs hela transaktionen och ändringarna tas bort;

  • Bekräftelse (Commit): Om alla operationer lyckas, bekräftas transaktionen och ändringarna blir permanenta.

Skapa transaktioner i SQL

I SQL betraktas varje enskilt kommando som en transaktion.
Vi kan dock manuellt skapa transaktioner som innehåller mer än ett kommando.

Föreställ dig ett scenario där vi har två tabeller:

  • tabellen BankAccounts, som innehåller följande kolumner: account_number (Primary Key), account_holder och balance;

  • UserLogs-tabellen med kolumner: account_number, action, timestamp etc. Kombinationen av account_number och timestamp är en sammansatt primärnyckel för denna relation.

Låt oss nu överväga ett scenario där vi avser att skapa ett nytt bankkonto och samtidigt generera en loggpost för att markera tillägget av det nya kontot.
Det är avgörande att dessa två åtgärder, att lägga till kontot och logga händelsen, behandlas som en enda logisk enhet och måste omslutas i en enda transaktion. Här är ett mycket grundläggande exempel på hur vi kan göra detta med en transaktion:

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

I frågan ovan använder vi BEGIN-blocket för att ange att alla efterföljande satser måste betraktas som en enda enhet – om en av dem inte utförs, får ingen av satserna utföras.
Nyckelordet COMMIT markerar slutet på transaktionsblocket.

question mark

Vad säkerställer begreppet atomicitet i samband med databastransaktioner?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 3
some-alt