2013-04-20 70 views
0

我有一個數據庫,其中包含一個包含電子組件的表。我想根據組件的類型創建視圖。MySQL:根據表內容自動生成視圖

比方說,我的表作爲2場:

  • 類別
  • 子類別

現在,讓我們說,我有我的表很多徑向Rasistor。他們都有類別:電阻器,子類別:徑向。 我想執行一個這樣的查詢:

CREATE VIEW `Resistor - Radial` AS SELECT * FROM `components` WHERE `Category`='Resistor' AND `Sub Category`='Radial' 

這很簡單。現在,我希望每次用戶輸入新零件,刪除零件或修改現有零件時自動生成這些視圖。我想過觸發器,但對它們不瞭解。觸發是一個好方法嗎?

+0

你爲什麼要創建這些'view's? – 2013-04-20 19:44:37

+0

因爲我的PCB軟件連接到該數據庫並識別表格。視圖是構建這個系統的正確方法。 – 2013-04-20 22:24:25

+0

@ user2302957。 。 。你真的不能使用這個簡單的'where'子句嗎? – 2013-04-21 00:54:52

回答

0

我認爲你的問題的「理想」答案是在表上有一個插入觸發器,然後讓這個觸發器創建一個視圖。但是,爲了使用用戶生成的名稱創建視圖,您需要使用動態SQL。 And this is not support in MySQL

另一種解決方案是用戶定義的函數返回一個表。但這也不是MySQL的一部分。

所以,如果你真的想這樣做,那麼我可以考慮兩種選擇。首先是在存儲過程中將所有插入操作包裝到表中。存儲過程然後可以調用動態SQL來創建視圖。

另一種方法是每天(小時?每分鐘?)作業,查找表中的新記錄。找到新的組合後,創建視圖。

+0

這是很多有用的信息。關於你提出的建議,我認爲最好的做法是重現觀點的日常工作。謝謝 – 2013-04-22 21:15:38