Потому можно проще, делаете таблицу с триггером чтобы не терять новые данные во время работ, далее копируете те данные что нужны в новую таблицу (лучше через copy) и делаете truncate на текущую таблицу и возвращаете все данные назад из новой таблицы.
Вы забыли о том, что при изменении имени таблицы её внутренний tableoid не меняется и все объекты которые используют данную таблицу нужно будет менять — функции, представления...
Потому можно проще, делаете таблицу с триггером чтобы не терять новые данные во время работ, далее копируете те данные что нужны в новую таблицу (лучше через copy) и делаете truncate на текущую таблицу и возвращаете все данные назад из новой таблицы.
Вы забыли о том, что при изменении имени таблицы её внутренний tableoid не меняется и все объекты которые используют данную таблицу нужно будет менять — функции, представления...