2017-05-21 2 views
0

コピーする列をすべて列挙しないで、列を2つ除いた行を複製するにはどうすればよいですか? includeexcludeの関係で私が気にしているのは、新しい列を追加したり、テーブルから列を削除したりすると、新しい列を列挙するためにクローンを作成するストアドプロシージャを更新する必要があるということです。PostgreSQLのコピー行からいくつかの列を除いた

+0

なぜ行全体をコピーし、除外列をNULLに設定しないのですか? –

+0

私は主キー違反 – Gargoyle

答えて

0

明示的に列を列挙するか、*を使用する必要があります。 * except short_listのショートカットはありません。あなたは、例えばinformation_schema.columnsから既存の列からクエリを準備し、動的SQLでこれをハッキングしようとすることができます

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(...の変化に適応することができ、現在のに対してそれを比較する前の列のリストANGを保存し、正直なところ - 毎回明示的な列のリストを指定すると、より多くの問題が発生します。

関連する問題