2017-05-21 19 views
0

如何复制一行,排除几列,而不列出我想要复制的每一列?我担心的是includeexclude相比,如果我添加一个新的列或从表中删除一列,我必须记得更新这个存储过程来做克隆以列出新列。PostgreSQL复制行减少几列

+0

为什么不复制整行,然后将排除列设置为NULL? –

+0

因为我会得到主键违规 – Gargoyle

回答

0

您必须明确列出列或使用** 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(...适应变化,但说实话 - 它会导致更多的问题,然后每次指定明确的列列表。