2017-05-21 50 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(...適應變化,但說實話 - 它會導致更多的問題,然後每次指定明確的列列表。