如何在不重复返回定义中的所有列名称和类型的情况下返回表的其他列?

时间:2018-09-21 18:40:18

标签: postgresql sql-function

我的桌子上有很多列。我想创建一个返回所有这些列以及一个附加列的函数。有没有一种方法可以做到这一点类型安全(即,无需返回requests)而不必重复所有列名和类型?

例如:

record

我不得不在函数定义中重复create table t ( t1 int, t2 int, t3 text, t4 boolean ); create function extra_t() returns table(t1 int, t2 int, t3 text, t4 boolean, extra text) as $$ select t.*, 'example'::text from t; $$ language sql

1 个答案:

答案 0 :(得分:2)

在您的奋斗中,我与您同在,我不知道这样做的好方法。

也就是说,这是一种骇人听闻的方式。确实将在返回类型中指定各个字段的负担转移到了实际的函数文本上,但是我认为整个过程更易于理解。

create table t2 (
  extra_text text
) inherits (t);

create or replace function extra_t() returns setof t2 as
$$
    select t.*, 'example'::text from t;
$$ language sql;

就像我说的那样,这不是一个好方法。这只是一种方式。