Что такое SAVEPOINT? Как использовать в Go?

Ответ

SAVEPOINT - точка сохранения внутри транзакции. Можно откатиться к ней без отмены всей транзакции. В Go: tx.ExecContext(ctx, "SAVEPOINT sp1"), при ошибке tx.ExecContext(ctx, "ROLLBACK TO SAVEPOINT sp1") и продолжить. Удобно для вложенной логики: откатить часть операций, остальное оставить. Не все драйверы поддерживают одинаково; в database/sql выполняют сырым Exec.

tx.ExecContext(ctx, "SAVEPOINT before_update")
// ...
tx.ExecContext(ctx, "ROLLBACK TO SAVEPOINT before_update")
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.