Atomitet
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
ochbalance
; -
UserLogs
-tabellen med kolumner:account_number
,action
,timestamp
etc. Kombinationen avaccount_number
ochtimestamp
ä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.
Tack för dina kommentarer!
Fråga AI
Fråga AI
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
Atomitet
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
ochbalance
; -
UserLogs
-tabellen med kolumner:account_number
,action
,timestamp
etc. Kombinationen avaccount_number
ochtimestamp
ä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.
Tack för dina kommentarer!