Tranzaksiya โ€” bir butun bo'lishi kerak bo'lgan amallar to'plami.

ACID tamoyillari

  • Atomicity: Hamma amal bajariladi yoki hech biri
  • Consistency: Ma'lumotlar yaxlit holatda qoladi
  • Isolation: Tranzaksiyalar bir-biriga ta'sir qilmaydi
  • Durability: Bajarilgan amallar saqlanib qoladi

Oddiy tranzaksiya

BEGIN;

UPDATE hisoblar SET balans = balans - 100000 WHERE id = 1;
UPDATE hisoblar SET balans = balans + 100000 WHERE id = 2;

COMMIT;   -- muvaffaqiyatli yakunlash

ROLLBACK

BEGIN;

UPDATE hisoblar SET balans = balans - 100000 WHERE id = 1;

-- Xato bo'lsa
ROLLBACK;   -- barcha o'zgarishlarni bekor qilish

SAVEPOINT

BEGIN;

INSERT INTO buyurtmalar VALUES (1, 'Mahsulot A');
SAVEPOINT nuqta1;

INSERT INTO buyurtmalar VALUES (2, 'Mahsulot B');

-- Faqat oxirgi amalni bekor qilish
ROLLBACK TO SAVEPOINT nuqta1;

COMMIT;

Python da tranzaksiya

import psycopg2

conn = psycopg2.connect(...)
conn.autocommit = False

try:
    cur = conn.cursor()
    cur.execute("UPDATE hisoblar SET balans = balans - 100000 WHERE id = 1")
    cur.execute("UPDATE hisoblar SET balans = balans + 100000 WHERE id = 2")
    conn.commit()
    print('Muvaffaqiyatli')
except Exception as e:
    conn.rollback()
    print(f'Xato: {e}')
finally:
    conn.close()