2010-08-31 94 views
1

數據庫模式更改後,現在在存儲過程中計算了一列。是否有可能爲應用程序進行無縫改變?在PostgreSQL中重寫查詢

因此,當一個程序發送類似

SELECT id, 
     value 
    FROM table 

查詢......它,而不是得到的

SELECT id, 
     compute_value() AS value 
    FROM table 

因此我想我可以使用規則,但它是不可能的在現有表上創建SELECT規則。

因此,我認爲唯一的選擇是創建一個新的表格和一個現有名稱的視圖。其中,因爲需要對視圖進行INSERT/UPDATE觸發器太複雜。那麼我寧願更新所有的客戶端應用程序。

+0

規則在'SELECT'上是不可能的? http://www.postgresql.org/docs/8.4/interactive/sql-createrule.html查看「event」:事件是SELECT,INSERT,UPDATE或DELETE之一。 – DrColossos 2010-09-02 12:50:39

+0

我想要「現有表格上的SELECT規則」。 IE瀏覽器。你有一個'富'表,你想要它的SELECT規則。 – jira 2010-09-10 12:40:37

回答

2

如果你知道你想返回值,你使用一個函數而不是存儲過程。然後你會參考它:

SELECT id, 
     your_function_name(parameter) AS value 
    FROM TABLE 

an example under "SQL Functions on Composite Types" in the documentation

使用上述語句創建視圖是理想的,如果您的應用程序需要不斷計算的值,否則我不會打擾。

+0

是的,一個視圖是要走的路。 – 2010-09-01 05:48:21