Sobes.tech
Junior

Γιατί χρησιμοποιούνται οι συναλλαγές σε βάσεις δεδομένων;

sobes.tech AI

Απάντηση από AI

Οι συναλλαγές διασφαλίζουν την ατομικότητα, τη συνέπεια, την απομόνωση και την ανθεκτικότητα (ACID) των λειτουργιών με βάση δεδομένων.

  • Ατομικότητα: Όλες οι λειτουργίες σε μια συναλλαγή ολοκληρώνονται πλήρως ή καθόλου. Αν μια λειτουργία αποτύχει, όλες ανατρέπονται.
  • Συνέπεια: Η συναλλαγή μεταφέρει τη βάση δεδομένων από μια συνεπή κατάσταση σε μια άλλη. Αποτρέπονται παραβιάσεις περιορισμών (π.χ., μοναδικά κλειδιά).
  • Απομόνωση: Κάθε συναλλαγή εκτελείται σαν να ήταν η μόνη στο σύστημα. Οι αλλαγές που κάνει μια συναλλαγή δεν είναι ορατές σε άλλες μέχρι να ολοκληρωθεί.
  • Ανθεκτικότητα: Μετά την επιτυχή ολοκλήρωση μιας συναλλαγής, οι αλλαγές της αποθηκεύονται και δεν χάνονται ακόμα και σε περίπτωση σφάλματος συστήματος.

Οι συναλλαγές είναι σημαντικές για την εξασφάλιση της ακεραιότητας των δεδομένων, ειδικά όταν εκτελούνται πολλαπλές σχετικές λειτουργίες που πρέπει να εκτελεστούν μαζί ή καθόλου. Ένα παράδειγμα είναι η μεταφορά χρημάτων από έναν λογαριασμό αποταμίευσης σε έναν τρεχούμενο λογαριασμό.

-- Έναρξη συναλλαγής
START TRANSACTION;

-- Αφαίρεση από τον πρώτο λογαριασμό
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;

-- Αν η προηγούμενη λειτουργία ήταν επιτυχής, καταχώρηση στον δεύτερο λογαριασμό
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;

-- Έλεγχος ότι και οι δύο λειτουργίες ολοκληρώθηκαν επιτυχώς και χωρίς σφάλματα
-- IF σφάλμα THEN
--   ROLLBACK; -- Αναίρεση όλων των αλλαγών
-- ELSE
--   COMMIT; -- Επιβεβαίωση όλων των αλλαγών
-- END IF;

-- Υποθέτοντας ότι και οι δύο εντολές ολοκληρώθηκαν με επιτυχία, για το παράδειγμα
COMMIT; -- Επιβεβαίωση της συναλλαγής
-- ROLLBACK; -- Αναίρεση της συναλλαγής σε περίπτωση σφάλματος