как можно сгенерировать и заменить значения строк column -> number_phones в PostgreSQL рандомными, НО уникальными целочисленными значениями bigint?

может кто то сможет подсказать, как можно решить данную задачу, я еще новичок и пока не могу разобраться. дана таблица users, столбец (колонка) phone_number (NOT NULL), в ней нужно скрыть конфиденциальные данные клиентов, заменив другими в каком нибудь целочисленном диапазоне с аналогичным количеством символов. в ней более 11 000 строк. пробовал сделать что то вроде этого: UPDATE users SET phone_number = floor(random() * (71119991234-71110001234) + 71110001234)::bigint; но это не гарантирует уникальность генерируемых данных. соответственно получаю ошибку: ERROR: duplicate key value violates unique constraint "users_phone_number_unique"

что я еще могу использовать для данной задачи?


Ответы (1 шт):

Автор решения: Roman-Stop RU aggression in UA

Например так:

with generated_number as (
   select id, 71110001234 + row_number over() number
   from users
)
update users
set phone_number = number
from generated_number g 
where g.id = users.id
→ Ссылка