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

Middle
1.1k просмотров
AFK Offer AI

В pgx начинаешь транзакцию через pool.Begin(ctx), получаешь tx, выполняешь запросы через tx.Query/tx.Exec, и в конце tx.Commit() или tx.Rollback(). Стандартный паттерн — defer tx.Rollback(ctx) сразу после Begin, а Commit() в конце, если всё ок. Если Commit() уже вызван, Rollback() просто ничего не делает. Для более сложных сценариев есть pgx.TxOptions с уровнями изоляции: ReadCommitted, RepeatableRead, Serializable. В нашем проекте FOR UPDATE SKIP LOCKED используется внутри транзакций для атомарного захвата задач.

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

Как работает Map?