0
如何复制一行,排除几列,而不列出我想要复制的每一列?我担心的是include
与exclude
相比,如果我添加一个新的列或从表中删除一列,我必须记得更新这个存储过程来做克隆以列出新列。PostgreSQL复制行减少几列
如何复制一行,排除几列,而不列出我想要复制的每一列?我担心的是include
与exclude
相比,如果我添加一个新的列或从表中删除一列,我必须记得更新这个存储过程来做克隆以列出新列。PostgreSQL复制行减少几列
您必须明确列出列或使用*
。 * 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(...
适应变化,但说实话 - 它会导致更多的问题,然后每次指定明确的列列表。
为什么不复制整行,然后将排除列设置为NULL? –
因为我会得到主键违规 – Gargoyle