2017-12-27 27 views
0

db2 luwバージョン10.5には、以下の列定義の表があります。 OPTCOUNTER列とCOMPNAME列の順序を変更したい。db2 luwの表の列順序を変更する

テーブルを削除して再作成する方法とは別に、これを行う方法はありますか?

       Data type      Column 
Column name      schema Data type name  Length  Scale Nulls 
------------------------------- --------- ------------------- ---------- ----- ------ 
DATABASEVENDOR     SYSIBM VARCHAR      32  0 Yes 
EDITION       SYSIBM VARCHAR      16  0 Yes 
VERSION       SYSIBM SMALLINT      2  0 Yes 
RELEASE       SYSIBM SMALLINT      2  0 Yes 
MOD        SYSIBM SMALLINT      2  0 Yes 
FIXPACK       SYSIBM SMALLINT      2  0 Yes 
OPTCOUNTER      SYSIBM SMALLINT      2  0 Yes 
COMPNAME      SYSIBM VARCHAR      32  0 No 

    8 record(s) selected. 
+0

目的の順序で列を含むビューを作成します。 – danny117

答えて

0

最初に、なぜ列の順序を変更したいですか?テーブルレイアウトからは、固定長の列の後ろに可変長の列があるので、これはOKです。

第2に、SELECTを使用して明示的に列名を解決することはできません。場合

select DATABASEVENDOR, EDITION, VERSION, RELEASE, MOD, FIXPACK, COMPNAME, OPTCOUNTER 
from MYTABLE 

は、あなたが本当に、列の順序を変更ALTER TABLEし、最初のDROP optcounterを使用し、再度それを追加します。

+0

ありがとうございます。 このテーブル定義を別のデータベースと同期させたいとします。 他のデータベーステーブルでは、COMPNAME nameカラムが最初に来てからOPTCOUNTERカラムが来ます。 – Lakshmikanth

+0

この場合、テーブル全体を削除して再作成するか、ALTER TABLEを使用して列optcounterを削除して追加することができます。 –

+0

@Lakshmikanth - ここでdata_henrikをエコーする必要があります。列の順序は関係がなく、実装の詳細を考慮する必要があります。私は、データベースをリストされた順序で**保存する必要があるか確かではありません(いくつかの最適化の可能性に優先して)。また、列リストは常に明示的にリストする必要があります。それ以外の場合は、列リストはいくぶん_undefined_です。たとえば、この名前を変更すると、列を列挙しなかった人は誰もが大きな驚きを覚えています(うまくいけば間違いがあります)。 –

関連する問題