как можно сгенерировать и заменить значения строк 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 шт):
Например так:
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