Back to questions
Middle+
5
Синтаксис транзакций в Go/SQL?
Companies where asked
Magnit Tech
Answer from AI
sobes.tech AI
В Go для работы с транзакциями в базе данных используется пакет database/sql. Основные шаги:
- Начать транзакцию с помощью
db.Begin(). - Выполнить необходимые операции через объект транзакции
tx. - Зафиксировать изменения вызовом
tx.Commit()или отменить с помощьюtx.Rollback().
Пример:
import (
"database/sql"
_ "github.com/lib/pq" // драйвер для PostgreSQL
)
func doTransaction(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()
}
Важно всегда обрабатывать ошибки и вызывать Rollback при ошибках, чтобы не оставлять транзакцию открытой.