2016-12-21 68 views
0

我有以下情況:是否可以自動更新視圖列(Mysql)?

有一個數據庫(主)包含常見信息,如'modules','menu'等,每個項目包含一個數據庫,其中包含每個主表的視圖數據庫。例如:

  • 模塊(ID,說明)
  • 菜單(ID,標籤,HREF,...)
  • ...

PROJECT1

  • 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

你的意思是當任何基表是** ALTERE ** d時自動** ALTER **視圖。 – FDavidov

回答

1

您正在定義使用*的觀點:

CREATE VIEW menu_view AS 
    SELECT * FROM main.menu; 

唉,當視圖是創建,而不是當該視圖是運行*被解釋。您實際上可以在元數據中看到列已定義。

做你想做什麼的唯一方法是重新編譯/改變新列的意見。

這在documentation解釋:

視圖定義是「凍結」在創建時並沒有被後來的變化對基礎表的定義影響 。例如,對於 示例,如果在表上將視圖定義爲SELECT *,則稍後添加到表中的新列 不會成爲視圖的一部分,而從表中刪除的列 將在從 視圖中選擇時導致錯誤。

+0

謝謝!我會盡力找到另一種方式 – CarlosCarucce

相關問題