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()
Таким образом, транзакция обеспечивает целостность и согласованность данных при выполнении нескольких связанных операций.