Как работать с транзакциями в pgx?

Middle
413 просмотров
AFK Offer AI

tx, err := pool.Begin(ctx) начинает транзакцию. Дальше: tx.QueryRow(), tx.Exec() — всё через tx. В конце: tx.Commit(ctx) или tx.Rollback(ctx). Паттерн: defer tx.Rollback(ctx) сразу после Begin — если Commit не вызван, транзакция откатится. Есть удобный хелпер: pgx.BeginTxFunc(ctx, pool, pgx.TxOptions{}, func(tx pgx.Tx) error { ... }) — автоматический commit/rollback. TxOptions: IsoLevel (ReadCommitted, Serializable), AccessMode (ReadOnly). Не держи транзакцию открытой долго — это блокирует соединение.

Следующий вопрос

Как организовать error codes?