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")