Sobes.tech
Back to questions
Junior — Middle
61

Можете объяснить, что подразумевается под транзакцией в PostgreSQL и как она работает?

Answer from AI

sobes.tech AI

Транзакция в PostgreSQL — это последовательность операций с базой данных, которая выполняется как единое целое. Транзакция гарантирует, что все операции внутри неё либо успешно завершатся вместе (commit), либо при ошибке откатятся (rollback), чтобы сохранить целостность данных.

Основные свойства транзакций — ACID:

  • Atomicity (Атомарность): все операции внутри транзакции выполняются полностью или не выполняются вовсе.
  • Consistency (Согласованность): транзакция переводит базу данных из одного корректного состояния в другое.
  • Isolation (Изоляция): параллельные транзакции не влияют друг на друга.
  • Durability (Надёжность): после подтверждения транзакции изменения сохраняются даже при сбоях.

В PostgreSQL транзакция начинается с команды BEGIN или автоматически при первом запросе, если включён автокоммит, и завершается командами COMMIT или ROLLBACK.

Пример на Python с использованием psycopg2:

import psycopg2

conn = psycopg2.connect(...)
try:
    with conn:
        with conn.cursor() as cur:
            cur.execute("INSERT INTO users(name) VALUES(%s)", ('Alice',))
            cur.execute("INSERT INTO accounts(user_name, balance) VALUES(%s, %s)", ('Alice', 100))
    # Если все запросы успешны, транзакция коммитится автоматически
except Exception as e:
    # При ошибке транзакция откатывается
    print(f"Ошибка: {e}")
finally:
    conn.close()

Таким образом, транзакция обеспечивает целостность и согласованность данных при выполнении нескольких связанных операций.