Могу ли я создать представление Oracle, которое автоматически проверяет наличие новых ежемесячных таблиц? - PullRequest
1 голос
/ 08 сентября 2010

Мне интересно, возможно ли создать представление, которое автоматически проверяет, существует ли новая ежемесячно созданная таблица и есть ли эта таблица?

У нас каждый месяц создается новая таблица, каждая из которых заканчивается номером месяца, например

table for January:  table_1
table for February: table_2
etc...

Можно ли создать представление, которое получает данные из всех этих таблиц, а также находит, когда создается новая?

Ответы [ 4 ]

4 голосов
/ 08 сентября 2010

Нет, определение представления является статическим.Вам придется каждый месяц заменять представление новой копией, включающей новую таблицу;Вы можете написать динамическую PL / SQL-программу для этого.Или вы можете создать все пустые таблицы сейчас и включить их все в определение представления;при необходимости вы можете отложить предоставление доступа INSERT к будущим таблицам до тех пор, пока они не станут «живыми».

Но на самом деле эта модель несовершенна - см. ответ Михаила Паханцова для лучшей альтернативы - или просто получите одну простую таблицу сстолбец МЕСЯЦ.

4 голосов
/ 08 сентября 2010

Будет возможно, если вы вместо создания новой таблицы каждый месяц будете создавать новый раздел для существующей таблицы.

UPDATE:

Если у вас есть oracle SE без опции разделения, вы можете создать две таблицы: LiveTable и ArchiveTable. Затем каждый месяц вам нужно перемещать строки из Live в ArchiveTable и очищать живую таблицу. В этом случае вам нужно создать представление только из двух таблиц.

0 голосов
/ 13 мая 2011

Вы можете написать процедуру или функцию, которая просматривает USER_TABLES или ALL_TABLES, чтобы определить, существует ли таблица, создать динамический sql и вернуть курсор ref с данными. То же самое можно сделать с помощью конвейерной функции.

0 голосов
/ 09 сентября 2010

Другой вариант - создать таблицы в другой схеме с разрешениями для соответствующего пользователя и создать для них общедоступные синонимы.

По мере создания ежемесячных таблиц в локальной схеме они выходят за пределы приоритета.«Публичные синонимы и мнение их подберут.Он все равно будет признан недействительным и нуждается в перекомпиляции, но реальный текст представления должен измениться, что может быть проще с точки зрения контроля кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...