Size: a a a

pgsql – PostgreSQL

2020 July 29

2_

2flower _ in pgsql – PostgreSQL
это публичный канал,я думаю, если ему еще актуально он напишет.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
D. L
Всем привет. Пытаюсь в базе скрыть все номера телефонов,  но постоянно натыкаюсь на ошибку:

ОШИБКА:  повторяющееся значение ключа нарушает ограничение уникальности "user_user_phone_9279a142_uniq"
DETAIL:  Ключ "(phone)=(+700007045249)" уже существует.

Сам запрос:

UPDATE user_user
SET phone = (SELECT format('+70000%s%s%s%s%s%s%s',  a[1], a[2], a[3], a[4], a[5], a[6], a[7]) FROM  (
  SELECT ARRAY (
     SELECT trunc(random() * 10)::int
     FROM   generate_series(1, 10)
     ) AS a
  ) sub) WHERE id IN ( SELECT id FROM user_user);
на таблице специально есть ограничение, запрещающее дубликаты. убирать его без консультации с дизайнером схемы/архитектором я бы не стал.
самым простым вариантом будет использовать не random(), а заведомо уникальные данные — ту же колонку id
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Насколько я понимаю человеку нужен был алгоритм генерации уникальных значений просто
источник

DL

D. L in pgsql – PostgreSQL
Victor Yegorov
на таблице специально есть ограничение, запрещающее дубликаты. убирать его без консультации с дизайнером схемы/архитектором я бы не стал.
самым простым вариантом будет использовать не random(), а заведомо уникальные данные — ту же колонку id
Почему-то и с random у меня вечно возникают конфликты
источник

VS

Vladimir Smagin in pgsql – PostgreSQL
потому, что рандом легко дает повторные значения
источник

VY

Victor Yegorov in pgsql – PostgreSQL
D. L
Почему-то и с random у меня вечно возникают конфликты
а random() — он не уникальный
источник

2_

2flower _ in pgsql – PostgreSQL
D. L
Почему-то и с random у меня вечно возникают конфликты
прочитайте совет Виктора, это рабочее решение
источник

2_

2flower _ in pgsql – PostgreSQL
либо напиши ЧТО вы все таки хотите
источник

DL

D. L in pgsql – PostgreSQL
Нобходимо перед бэкапом скрыть все реальные номера телефонов...
источник

DL

D. L in pgsql – PostgreSQL
Плюс у разработчиков бывают ошибки, что на стейже внезапно смска уедет на реальный номер
источник

2_

2flower _ in pgsql – PostgreSQL
а что значит скрыть?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Harry Fox
пока что просто хочу понять как что работает, с какими инструментами и как принято работать, что происходит внутри. Проектирование меня пока не интересует. Ну и какаие-то базовые представления о БД у меня уже имеются.

Ладно, у меня давно книга по постгресу лежит, надо хоть по оглавлению пройтись, может это именно то, что мне нужно.
Проектирование баз данных является частью необходимого "фундамента".
Т.е. не стоит это пропускать — остальное будет гораздо труднее понять (как бухгалтерию без знания базовой алгебры, например). Но по книгам не подскажу (но http://www.mstu.edu.ru/study/materials/zelenkov/toc.html я полистал, и читать не советую — автор(ы) местами сами не понимают того, о чём пишут, а местами либо много бесполезной на практике "воды", либо, наоборот, тема не раскрывается в достаточной степени). :(
источник

2_

2flower _ in pgsql – PostgreSQL
если вам нужно просто любое значение берите generate_series и вперед, но проще сделать как сказал Виктор, дешево и сердито
источник

HF

Harry Fox in pgsql – PostgreSQL
Yaroslav Schekin
Проектирование баз данных является частью необходимого "фундамента".
Т.е. не стоит это пропускать — остальное будет гораздо труднее понять (как бухгалтерию без знания базовой алгебры, например). Но по книгам не подскажу (но http://www.mstu.edu.ru/study/materials/zelenkov/toc.html я полистал, и читать не советую — автор(ы) местами сами не понимают того, о чём пишут, а местами либо много бесполезной на практике "воды", либо, наоборот, тема не раскрывается в достаточной степени). :(
спасибо за совет
источник

DL

D. L in pgsql – PostgreSQL
2flower _
а что значит скрыть?
Ну то есть, реальных пользовательских номеров не должно быть в дампе базы. Номер должен начинаться с +7000 -дальше что угодно рандомное
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
D. L
Ну то есть, реальных пользовательских номеров не должно быть в дампе базы. Номер должен начинаться с +7000 -дальше что угодно рандомное
А почему просто не заменить на фиктивные (равные id пользователя, например), зачем именно случайные?
источник

DL

D. L in pgsql – PostgreSQL
Думаю можно..)
источник

2_

2flower _ in pgsql – PostgreSQL
вот теперь задача понятна.
источник

DL

D. L in pgsql – PostgreSQL
Но хотя нет. Тут мы можем встать на ограничение, что у поля максимум 14 символов.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
D. L
Но хотя нет. Тут мы можем встать на ограничение, что у поля максимум 14 символов.
Я не понял... какое ограничение, у какого поля?
источник