Junior — Middle
Pouvez-vous expliquer ce qu'est une transaction dans le système de gestion de bases de données PostgreSQL?
sobes.tech IA
Réponse de l'IA
В 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()
}
В этом примере обе операции либо выполнятся вместе, либо не будут применены вовсе.