PostgreSQL 复制行减去几列

PostgreSQL copy row minus a few columns

如何在不列出要复制的每一列的情况下复制一行(不包括几列)?我关心的是作为 includeexclude 相比,如果我添加一个新列或从 table 中删除一个列,我必须记住更新这个存储过程克隆以列出新列。

您必须明确列出列或使用 ** except short_list 没有快捷方式。您可以尝试使用动态 sql 进行破解,从现有列中准备查询,例如 information_schema.columns:

t=# select column_name,ordinal_position from information_schema.columns where table_name ='s160' order by ordinal_position;
 column_name | ordinal_position
-------------+------------------
 id          |                1
 a           |                2
 b           |                3
 c           |                4
 d           |                5
(5 rows)

因此,保存以前的列列表并将其与当前列进行比较会给你新的列,你可以适应 execute format(... 中的更改,但老实说 - 它会导致更多问题,然后每次都指定明确的列列表。