2016-12-21 9 views
0

У меня сценарий:Можно ли автоматически обновлять столбцы представлений (Mysql)?

Существует одна база данных (основная), которая содержит общую информацию, такую ​​как «модули», «меню» и т. Д. И одна база данных для каждого проекта, содержащая представление для каждой из этих таблиц в главном база данных. Например:

основных

  • модулей (идентификатор, описание)
  • меню (идентификатор, метка, HREF, ...)
  • ...

проект1

  • modules_view
  • menu_view

тех взглядов, где созданы так же просто, как:

CREATE VIEW menu_view AS SELECT * FROM main.menu 

Теперь я должен создать столбец «заказ» в меню, но вид колонки не является обновлено.

ALTER TABLE `menu` ADD `menu_order` INT NOT NULL AFTER `href`; 

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


OBS: есть 10+ проекты ... Так что это становится все труднее поддерживать, поскольку это число растет

+0

Что такое колонка 'order'? Как вы его создаете? –

+0

@GordonLinoff updated =) – CarlosCarucce

+0

Что вы имеете в виду ** ALTER ** виды автоматически, когда какая-либо из базовых таблиц ** ALTERE ** d? – FDavidov

ответ

1

Вы определяете вид с помощью *:

CREATE VIEW menu_view AS 
    SELECT * FROM main.menu; 

Увы, * интерпретируется, когда вид создан, а не когда вид пробег. Фактически вы можете увидеть в метаданных, что столбцы определены.

Единственный способ сделать то, что вы хотите, это перекомпилировать/изменить виды для новых столбцов.

Это объясняется в documentation:

определение

Вид «замораживается» при создании времени и не влияет последующими изменениями определений базовых таблиц. Например, для , если представление определено как SELECT * в таблице, новые столбцы , добавленные в таблицу позже, не становятся частью представления, а столбцы , выпавшие из таблицы, приведут к ошибке при выборе из окна .

+0

Спасибо! Я попытаюсь найти другой способ – CarlosCarucce