Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Atomitet | Acid
SQL-optimering och Frågefunktioner

bookAtomitet

Atomicitet i SQL avser en av ACID-egenskaperna, vilket säkerställer att vi använder transaktioner vid frågeställning av 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, vilket återgår ändringarna;

  • 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 fler ä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.

I de kommande kodexemplen kommer du att se hur data infogas och hanteras i dessa tabeller, vilket demonstrerar atomära operationer med verkliga poster från det angivna schemat.

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

Nu övervägs ett scenario där en nytt bankkonto ska skapas och samtidigt genereras en loggpost för att indikera 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 detta kan göras 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 frågan ovan använder vi BEGIN-blocket för att ange att alla efterföljande satser måste betraktas som en 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

bookAtomitet

Svep för att visa menyn

Atomicitet i SQL avser en av ACID-egenskaperna, vilket säkerställer att vi använder transaktioner vid frågeställning av 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, vilket återgår ändringarna;

  • 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 fler ä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.

I de kommande kodexemplen kommer du att se hur data infogas och hanteras i dessa tabeller, vilket demonstrerar atomära operationer med verkliga poster från det angivna schemat.

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

Nu övervägs ett scenario där en nytt bankkonto ska skapas och samtidigt genereras en loggpost för att indikera 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 detta kan göras 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 frågan ovan använder vi BEGIN-blocket för att ange att alla efterföljande satser måste betraktas som en 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