2013-05-16 38 views
0

我有一個視圖由兩個表組成。比方說表格TableA和表格TableB。postgresql函數可以帶的最大參數個數

現在表A已經有大約20列,表B有4列。

TableA (
    id datatype, 
    uid datatype, 
    . 
    . 
    . 
    18 more); 

TableB (
    id datatype, 
    uid datatype, 
    a_id datatype, 
    amount datatype, 
    CONSTRAINT tablea_tableb_fkey FOREIGN KEY (a_id) 
     REFERENCES tablea (id) MATCH SIMPLE 
     ON UPDATE RESTRICT ON DELETE RESTRICT, 
); 

所以TableA和TableB之間有一對多的關係。現在我已經寫了如下視圖...

CREATE OR REPLACE VIEW AB AS 
SELECT a.id, a.uid, ..., array_agg(b.amount) AS amounts 
    FROM TableA a 
    JOIN TableB b ON a.id = b.a_id 
    GROUP BY i.id; 

現在我想編寫這個視圖,我正在通過編寫一個輔助函數的插入規則。該函數需要大約18個參數(除了iduid具有默認值)插入到TableA中,並且1個參數是用於TableB的數組。

因此,函數的總參數是19.我想知道什麼是我可以在postgresql中傳遞的參數的最大數量?發送這麼多參數是否明智?有沒有更好的方法來爲這麼多的參數編寫函數?

+0

檢查我在postgresql 9.2中查詢後使用的最大函數參數。 select * from pg_settings where name ='max_function_args'; –

回答

1

FUNC_MAX_ARGS是一個編譯參數(你可以改變它,並重新編譯),並在我的9.2的源代碼是100

如果您有更多的參數,然後用一個陣列是一個好主意。