Atomisuus
Atomisuus SQL:ssä viittaa yhteen ACID-ominaisuuksista, joka varmistaa, että käytämme transaktioita tietoja kysyttäessä SQL:llä.
SQL-tietokantojen yhteydessä atomisuus takaa, että kaikki toiminnot tietyn loogisen yksikön sisällä suoritetaan kokonaan tai ei yhtään niistä.
Transaktioiden käsittely SQL:ssä
Keskeiset ominaisuudet
-
Palautus (Rollback): Jos jokin osa epäonnistuu (esim. virheen tai rajoitteen rikkomisen vuoksi), koko transaktio palautetaan ja muutokset peruutetaan;
-
Vahvistus (Commit): Jos kaikki toiminnot onnistuvat, transaktio vahvistetaan ja muutokset tallennetaan pysyvästi.
Transaktioiden luominen SQL:ssä
SQL:ssä jokainen yksittäinen lause katsotaan transaktioksi.
Voimme kuitenkin luoda manuaalisesti transaktioita, jotka sisältävät useamman kuin yhden lauseen.
Kuvitellaan tilanne, jossa meillä on kaksi taulua:
-
BankAccounts
-taulu, joka sisältää seuraavat sarakkeet:account_number
(Primary Key),account_holder
jabalance
; -
UserLogs
-taulu, jossa on sarakkeet:account_number
,action
,timestamp
jne. Sarakkeidenaccount_number
jatimestamp
yhdistelmä muodostaa tämän relaation yhdistetyn pääavaimen.
Tarkastellaanpa nyt tilannetta, jossa tarkoituksena on luoda uusi pankkitili ja samanaikaisesti luoda lokimerkintä uuden tilin lisäämisestä.
On olennaista, että nämä kaksi toimenpidettä, tilin lisääminen ja tapahtuman kirjaaminen, käsitellään yhtenä loogisena kokonaisuutena ja ne tulee sisällyttää samaan transaktioon. Tässä on hyvin yksinkertainen esimerkki siitä, miten tämä voidaan toteuttaa transaktion avulla:
-- 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;
Yllä olevassa kyselyssä käytetään BEGIN
-lohkoa osoittamaan, että kaikki seuraavat lauseet tulee käsitellä yhtenä kokonaisuutena – jos yksikään niistä ei onnistu, mitään lauseista ei tule suorittaa.
COMMIT
-avainsana osoittaa transaktiolohkon päättymisen.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Atomisuus
Pyyhkäise näyttääksesi valikon
Atomisuus SQL:ssä viittaa yhteen ACID-ominaisuuksista, joka varmistaa, että käytämme transaktioita tietoja kysyttäessä SQL:llä.
SQL-tietokantojen yhteydessä atomisuus takaa, että kaikki toiminnot tietyn loogisen yksikön sisällä suoritetaan kokonaan tai ei yhtään niistä.
Transaktioiden käsittely SQL:ssä
Keskeiset ominaisuudet
-
Palautus (Rollback): Jos jokin osa epäonnistuu (esim. virheen tai rajoitteen rikkomisen vuoksi), koko transaktio palautetaan ja muutokset peruutetaan;
-
Vahvistus (Commit): Jos kaikki toiminnot onnistuvat, transaktio vahvistetaan ja muutokset tallennetaan pysyvästi.
Transaktioiden luominen SQL:ssä
SQL:ssä jokainen yksittäinen lause katsotaan transaktioksi.
Voimme kuitenkin luoda manuaalisesti transaktioita, jotka sisältävät useamman kuin yhden lauseen.
Kuvitellaan tilanne, jossa meillä on kaksi taulua:
-
BankAccounts
-taulu, joka sisältää seuraavat sarakkeet:account_number
(Primary Key),account_holder
jabalance
; -
UserLogs
-taulu, jossa on sarakkeet:account_number
,action
,timestamp
jne. Sarakkeidenaccount_number
jatimestamp
yhdistelmä muodostaa tämän relaation yhdistetyn pääavaimen.
Tarkastellaanpa nyt tilannetta, jossa tarkoituksena on luoda uusi pankkitili ja samanaikaisesti luoda lokimerkintä uuden tilin lisäämisestä.
On olennaista, että nämä kaksi toimenpidettä, tilin lisääminen ja tapahtuman kirjaaminen, käsitellään yhtenä loogisena kokonaisuutena ja ne tulee sisällyttää samaan transaktioon. Tässä on hyvin yksinkertainen esimerkki siitä, miten tämä voidaan toteuttaa transaktion avulla:
-- 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;
Yllä olevassa kyselyssä käytetään BEGIN
-lohkoa osoittamaan, että kaikki seuraavat lauseet tulee käsitellä yhtenä kokonaisuutena – jos yksikään niistä ei onnistu, mitään lauseista ei tule suorittaa.
COMMIT
-avainsana osoittaa transaktiolohkon päättymisen.
Kiitos palautteestasi!