2011-10-26 12 views
11
ALTER TABLE Log ADD log_id bigint IDENTITY BEFORE cust_id_fk 

上記のコードは、最後の位置に新しい列を追加します。私はそれを最初の位置に追加したい。また、私はそれを主キーとしたい。MSSQL Serverの特定の位置に列を追加します。

+2

テーブルの列の「順序」は重要ではありません。物理的な格納順序はliですとにかくあなたが見ているものとは異なる。 –

+1

OCD以外は**ノー**の違いがあります。 [One](http://stackoverflow.com/questions/6121884/sql-server-2008-cannot-insert-new-column-in-the-middle-position-and-change-dat/6121952#6121952)と[ 2](http://stackoverflow.com/questions/6692021/performance-space-implications-when-ordering-sql-server-columns/6692107#6692107)。 FYI @Damien_The_Unbelieverあなたをバックアップするための情報 – gbn

+2

私の欄がきれいに見えるようにしたい。 – Chloe

答えて

9

テーブルを削除し、列を正しい順序で再作成する必要があります。 SSMSでテーブルを変更すると、変更スクリプトを生成して、それを使用して本番サーバーに変更を展開することができます。

+0

それは主観的な点です。しかし、あなたの質問はSQL Serverとしてタグ付けされているので、なぜ私はSSMSについて言及したのですか? –

+0

あなたの答えを選択した理由は同じものを実装するメソッドがない –

+0

これはMSSQLを使用しない理由です。"MongoDB"のGoogleの提案を示唆するかもしれない;) – sean2078

-2

別のテーブルを作成してデータをコピーする必要があります。しかし、 "順序の位置"を見て、それを更新しようとする?

SELECT 
    ORDINAL_POSITION 
    ,COLUMN_NAME 
    ,DATA_TYPE 
    ,CHARACTER_MAXIMUM_LENGTH 
    ,IS_NULLABLE 
    ,COLUMN_DEFAULT 
FROM 
    INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_NAME = 'Product' 
ORDER BY 
    ORDINAL_POSITION ASC; 

プライマリキーは、多くの回答を見つけることができる別の質問です。

+0

関係なく、とにかくできない – gbn

3

質問が古い場合でも、より正確なManagement Studioが必要です。

この列は、手動で作成することも、Management Studioで作成することもできます。しかし、Management Studioはテーブルを再作成する必要があり、あまりにも多くのデータがある場合はタイムアウトになり、テーブルが軽い場合を避けてください。

列の順序を変更するには、単にManagement Studioで列を移動するだけです。これは、テーブル定義内の列の順序を変更する可能性が最も高いため、Management Studioがテーブルを再作成する必要はありません(例外が存在する可能性が最も高い)。

私はGUIを使って列を追加することができないため、このように多くの機会にGUIのデータを使用しています。その後、Management StudioのGUIを使用して列を移動し、単純に保存しました。

あなたは保証されたタイムアウトから数秒待つことになります。

0

MSSMSでは、オブジェクトエクスプローラでテーブルを選択します。右クリックし、[変更]を選択します。 これにより、新しいデフォルトの順序に列をドラッグできる新しいタブが表示されます。 保存してください!完了しました。

0

ステップ:

  1. が選択テーブル名に挿入する新しい列
  2. を含む新しいテーブルを作成tablename_tempする元のテーブルの名前を変更します* tablename_temp
  3. からの外部キーとその他の制約を再作成します新しいテーブル
関連する問題