Назад к вопросам
Газпромбанк
Junior — Middle
74
Можете ли вы объяснить, что такое транзакция в системе управления базами данных PostgreSQL?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В PostgreSQL транзакция — это последовательность операций с базой данных, которые выполняются как единое целое. Транзакция гарантирует, что либо все операции внутри неё будут успешно выполнены, либо ни одна из них не повлияет на данные (атомарность). Это важно для сохранения целостности данных.
Транзакции обеспечивают свойства ACID:
- Атомарность — все операции внутри транзакции выполняются полностью или не выполняются вовсе.
- Согласованность — после транзакции база данных остаётся в корректном состоянии.
- Изолированность — параллельные транзакции не мешают друг другу.
- Долговечность — после подтверждения транзакции изменения сохраняются даже при сбоях.
Пример использования транзакции в Go с PostgreSQL:
import (
"database/sql"
_ "github.com/lib/pq"
)
func example(db *sql.DB) error {
tx, err := db.Begin()
if err != nil {
return err
}
_, err = tx.Exec("INSERT INTO users(name) VALUES($1)", "Alice")
if err != nil {
tx.Rollback()
return err
}
_, err = tx.Exec("UPDATE accounts SET balance = balance - 100 WHERE user_id = $1", 1)
if err != nil {
tx.Rollback()
return err
}
return tx.Commit()
}
В этом примере обе операции либо выполнятся вместе, либо не будут применены вовсе.