Why don't you use a temp table with a serial field and use is instead of offset?
pgsql-general by date:
Соглашаюсь с условиями обработки персональных данных