История появления вопроса. База PostgreSQL. Полетел сервер на малинке где хранилась информация с датчиков температуры, влажности и других. Кое как вытащил дамп с флешки, но там не оказалось данных за пол месяца. Восстановил, залил, запустил. Потом оказалось, что данные я всё-таки бекапил через Adminer и сохранился большой объём данных (13 дней из 14+). Пришлось играться с Autoincrement, раздвинуть диапазон, чтобы нужный участок влез, залить дамп. И тут возникла идея, поскольку формат базы я могу менять - сменить ID типа autoincrement на uuid на базе timestamp и id устройства. Кто-нибудь решал подобную задачу? Есть уже готовое обоснованное решение?
P.S. Больше не код интересует, а теория по хранению такого типа данных и использованию UUID. Всё в контексте СУБД, конкретно PostgreSQL.
Если проблема только в autoincriment, можно данные перезалить в новую таблицу, так чтобы autoincriment проставился и заполнился по новой. Можно, например в старую таблицу (из бэкапа) влить текущие данные и итоговую таблицу сделать актуальной.
Что то типа
INSERT INTO backup_table (SELECT ... FROM current_table)
Зачем? Если вы хотите генерировать uuid на базе - возьмите сразу sequence. Нет причин использовать uuid в этом случае, а неприятные побочные эффекты будут.
Пришлось играться с Autoincrement, раздвинуть диапазон, чтобы нужный участок влез
Зачем?
Взяли данные и вставили данные сгенерировав новые sequence. sequence даёт гарантированно уникальные значения.