Транзакции в database/sql. BeginTx и откат.

Ответ

BeginTx(ctx, opts) начинает транзакцию с опциональным уровнем изоляции. Полученный sql.Tx используется для Query/Exec/Prepare в рамках транзакции. Обязательно вызывать Rollback при ошибке (через defer), иначе соединение не вернется в пул. Commit после успешных операций.

tx, err := db.BeginTx(ctx, nil)
if err != nil { return err }
defer tx.Rollback()
_, err = tx.ExecContext(ctx, "INSERT ...")
if err != nil { return err }
return tx.Commit()
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.