0
コピーする列をすべて列挙しないで、列を2つ除いた行を複製するにはどうすればよいですか? include
とexclude
の関係で私が気にしているのは、新しい列を追加したり、テーブルから列を削除したりすると、新しい列を列挙するためにクローンを作成するストアドプロシージャを更新する必要があるということです。PostgreSQLのコピー行からいくつかの列を除いた
コピーする列をすべて列挙しないで、列を2つ除いた行を複製するにはどうすればよいですか? include
とexclude
の関係で私が気にしているのは、新しい列を追加したり、テーブルから列を削除したりすると、新しい列を列挙するためにクローンを作成するストアドプロシージャを更新する必要があるということです。PostgreSQLのコピー行からいくつかの列を除いた
明示的に列を列挙するか、*
を使用する必要があります。 * 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を保存し、正直なところ - 毎回明示的な列のリストを指定すると、より多くの問題が発生します。
なぜ行全体をコピーし、除外列をNULLに設定しないのですか? –
私は主キー違反 – Gargoyle