1

我有一个视图由两个表组成。假设表 TableA 和表 TableB。

现在表 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多少?发送这么多参数是否明智?有没有更好的方法来为这么多参数编写函数?

4

1 回答 1

1

FUNC_MAX_ARGS 是一个编译参数(你可以更改它并重新编译),在我的 9.2 源代码上是 100。

如果您有更多参数,那么使用数组是一个好主意。

于 2013-05-16T11:37:32.010 回答