Size: a a a

DBA - русскоговорящее сообщество

2021 June 17

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
> ну так я так и сделал

Нда. "Цените книги — источник фиги." ;) Вот что нужно использовать в таких случаях:
The FOR-IN-EXECUTE statement is another way to iterate over rows:

[ <<label>> ]
FOR target IN EXECUTE text_expression [ USING expression [, ... ] ] LOOP
   statements
END LOOP [ label ];
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
да, уже увидел. сейчас ещё раз попробую
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
получилось :(
обидно, ведь я уже так пробовал
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
И да, не писали бы Вы в стиле SELECT UNNEST(some_pks) — по-моему, использование set-returning functions в SELECT list сильно запутывает тех, кто потом будет это читать.
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
принял, спасибо
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Если именно восстанавливать, то обычно есть специализированные средства (и зачастую это [нетривиальные] клиентские приложения).
А если нужна гетерогенная репликация — тоже есть специализированные средства, и они, в самом деле, могут хранить названия таблиц в базе данных.
В любом случае, ни к нормальному моделированию, ни к DR всё это не имеет отношения.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Трындец как плохо...
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
ну а как ещё сделаешь?
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
В таблице не должны храниться имена таблиц.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Нормально  и сделаешь.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Выгружай всё, да и всё.
источник

СВ

Саша Воронов... in DBA - русскоговорящее сообщество
я не знаю других решений
источник

Ю

Юрий Шапоренко... in DBA - русскоговорящее сообщество
Почему нет? Для того же динамического SQL, особенно когда ко всем этим таблицам должна применяться одна и та же логика, — очень даже
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Потому что нет, потому что невозможно эти данные обрабатывать с помощью SQL.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Если к таблицам должна применяться одна логика, таблица должна быть одна.
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Потому что это смешивание данных с метаданными.
В основе многих antipatterns проектирования лежит вот это вот, если разобраться.
источник

Ю

Юрий Шапоренко... in DBA - русскоговорящее сообщество
У меня был похожий на вышеописанный кейс, где нужно было по различным правилам собирать информацию о выручке в разрезе предоставляемых услуг, затем применять к полученному результату определенный набор преобразований, одинаковый для каждой из услуг, а затем сливать это все в одну таблицу. При этом собираться могут как все услуги разом, так и несколько (от 1 до N-1), а остальная часть таблицы должна оставаться без изменений.
Я, конечно, из-за сжатых сроков наворотил сначала все сплошным кодом с выполнением одних и тех же операция преобразования к данным таблицам, но процедура получилась на 5900 строк, кажется. Потом плюнул, обернул эти преобразования в prepared statement и вызывал ее через format с указанием названия временной таблицы для соответствующей услуги. В итоге процедура стала занимать всего лишь 2800 строк.

Вот при этих входных данных какие были более подходящие варианты, нежели тот, что я реализовал?
источник

Ю

Юрий Шапоренко... in DBA - русскоговорящее сообщество
Собственно, ничего не мешало не явно задавать название временной таблицы, а записывать ее в отдельную временную таблицу и прогонять через цикл в ту же prepared statement, и это был точно такой же кейс, как и у молодого человека выше
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Я лично понятия не имею, например. Вы в самом деле думаете, что это достаточно конкретное описание задачи? ;)
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Суть претензий к "молодому человеку выше" состоит в том, что у него модель данных кривая.
И уже отсюда растут проблемы с "необходимостью" динамического SQL по разным таблицам и т.п. ерунды.
источник