我可以使用表格的返回类型加上其他表格的一列吗?

时间:2019-04-11 02:24:42

标签: postgresql set-returning-functions

我有一个PostgreSQL函数,返回table1id的{​​{1}}的所有列。我不希望为每个字段键入新的返回类型(如table2示例中的here所示),因为此表中有九列,而我将这样做多次针对不同的类似查询。 (查询是RETURNS TABLE。)

我想做类似的事情:

INNER JOIN

是否有一种简单的方法可以使用表名称/类型来完成此操作,还是必须键入每列并再次键入?

2 个答案:

答案 0 :(得分:2)

您可以通过定义函数返回类型来轻松实现这一点:

RETURNS TABLE (
   t1    schema.table1,
   t2_id bigint
)

然后,您将在结果集中仅获得两列,但第一列是与table1对应的复合类型,您可以按以下方式访问其成员:

SELECT (t1).*, t2_id FROM func();

答案 1 :(得分:0)

您可以使用table inheritance

postgres=# create table t1(a int, b int);
CREATE TABLE

postgres=# create table t2(c int) inherits(t1);
CREATE TABLE
postgres=# \d t2
                  Table "public.t2"
+--------+---------+-----------+----------+---------+
| Column |  Type   | Collation | Nullable | Default |
+--------+---------+-----------+----------+---------+
| a      | integer |           |          |         |
| b      | integer |           |          |         |
| c      | integer |           |          |         |
+--------+---------+-----------+----------+---------+
Inherits: t1