2

重複の可能性:
SQL Server 2008: 新しい列を中間位置に挿入してデータ型を変更することはできません

こんにちは、SQL SERVER 2008 & 2008 R2 を使用しています。alter コマンドを使用して、テーブルの特定の位置に列を追加したいと考えています。特定の位置に列を追加できるキーワードを使用する方法はありますか? ありがとう!アドバンスで。

4

2 に答える 2

4

スクリプトでこれを行う簡単な方法はありません。せいぜい次のスクリプトを使用して自動化できます。このスクリプトは、本質的に新しいテーブル スキーマ (新しい列を目的の場所に配置) を取得し、すべてのデータをoldからnewに挿入し、古いものを削除します。テーブルを作成し、ストアド プロシージャを使用して新しいテーブルの名前を古いテーブルに変更します。

create table [NewTable]
(
    [old_column_1] int
    ,[new_column_1] varchar(max) -- new col at location
    ,[old_column_2] int
);

insert into [NewTable] ( [old_column_1], [old_column_2] ) 
select [old_column_1], [old_column_2] from [OldTable] (nolock);

drop table [OldTable];

sp_rename '[NewTable]', '[OldTable]';

他の人が正しく指摘しているように、列の位置はデータベースに何の違いもありませんが、さまざまな個人的な理由でこれを達成したいという人間の欲求があるため、いくつかのオプションがあります. 次のいずれかを実行できます。

  1. 上記のスクリプトを使用してプロセスを処理します。
  2. テーブルの最後に列を追加できるようにし、クエリの順序を制御します。
  3. 基本的にオプション 2 の拡張であり、ビューを使用してプレゼンテーションの順序を制御します。
  4. SQL Server Management Studio の GUI を使用します。テーブルをグリッドとして表示するときに、列を目的の場所にドラッグ アンド ドロップできます。
于 2012-10-01T10:51:47.207 に答える
4

SQLサーバーでは非常に簡単ではありません..

最善の方法は、テーブルの最後に列を追加し、目的の列の順序でビューを作成することだと思います..

別のオプション..

すべてのデータを一時テーブルに入れ、正しい列順序で実際のテーブルを再作成してから、データを一時テーブルから実際のテーブルに挿入します

于 2012-10-01T10:39:47.763 に答える