которых хранятся в другой таблице? эдакий динамический FROM
смог найти EXECUTE format('SELECT blah FROM %s', SELECT table_name FROM ...), но more than one row returned by a subquery used as an expression
Никак, это делать невозможно и даже вредно. Лучше перепроектируй твою БД: всё надо свалить в одну таблицу.
но я уже сделал...
Переделывай, пока коллеги не убили...
А как тогда сделать, например следующее - в таблице хранятся имена некоторого количества таблиц, которые считаются "важными". И все содержимое этих "важных" таблиц по планировщику выгружается в файлы.
Эээ... выкинуть это всё в мусорное ведро, и нанять адекватного DBA (если это делается с целями Disaster Recovery). ;)
если адекватный ДБА сможет сделать женерик отношения между различными таблицами, то я только за
А если в базу другого вендора потом восстанавливать?
Я отвечал на конкретный вопрос, Вы не заметили? ;)
виноват, не увидел, куда реплай был
Если именно восстанавливать, то обычно есть специализированные средства (и зачастую это [нетривиальные] клиентские приложения). А если нужна гетерогенная репликация — тоже есть специализированные средства, и они, в самом деле, могут хранить названия таблиц в базе данных. В любом случае, ни к нормальному моделированию, ни к DR всё это не имеет отношения.
В таблице не должны храниться имена таблиц.
Выгружай всё, да и всё.
Почему нет? Для того же динамического SQL, особенно когда ко всем этим таблицам должна применяться одна и та же логика, — очень даже
Потому что нет, потому что невозможно эти данные обрабатывать с помощью SQL.
Если к таблицам должна применяться одна логика, таблица должна быть одна.
Потому что это смешивание данных с метаданными. В основе многих antipatterns проектирования лежит вот это вот, если разобраться.
Обсуждают сегодня