Мне нужно инкапсулировать набор таблиц JOIN, которые мы часто используем на сервере базы данных вендора. Мы используем одну и ту же логику JOIN во многих местах в извлечениях и т. Д., И казалось, что VIEW позволит определять и поддерживать JOIN в одном месте.
CREATE VIEW MasterView
AS
SELECT *
FROM entity_1 e1
INNER JOIN entity_2 e2 ON e2.parent_id = entity_1.id
INNER JOIN entity_3 e3 ON e3.parent_id = entity_2.id
/* other joins including business logic */
etc.
Проблема в том, что поставщик регулярно вносит изменения в БД (добавление столбцов, изменение имени), и я хочу, чтобы это автоматически отражалось в «MasterView».
SELECT * позволил бы это, но все базовые таблицы имеют столбцы идентификаторов, поэтому я получаю сообщение об ошибке «Имена столбцов в каждом представлении должны быть уникальными».
Я специально хочу избежать перечисления имен столбцов из таблиц, потому что: а) требуется частое обслуживание; б) в таблице несколько сотен столбцов.
Есть ли способ добиться динамизма SELECT *, но эффективно исключить определенные столбцы (т. Е. Идентификаторы)
Спасибо