web-dev-qa-db-ja.com

SQLServerの他の2つの列の間に列を追加する

テーブルを削除して再作成せずに、SQL Serverの2つの既存の列の間に列を挿入してテーブルに列を追加できますか?

8
PhilBrown

簡単な答えはノーです。列の順序が重要である理由はありますか?

6
Joe Stefanelli

中程度の長さの答え、はい(っぽい)ですが、それは醜いので、おそらくやりたくないでしょう。

注意:このコードは物理テーブルを作成します

CREATE TABLE MyTest (a int, b int, d int, e int)

INSERT INTO MyTest (a,b,d,e) VALUES(1,2,4,5)

SELECT * FROM MyTest

ALTER TABLE MyTest ADD c int
ALTER TABLE MyTest ADD d_new int
ALTER TABLE MyTest ADD e_new int

UPDATE MyTest SET d_new = d, e_new = e

ALTER TABLE MyTest DROP COLUMN d
ALTER TABLE MyTest DROP COLUMN e

EXEC SP_RENAME 'MyTest.d_new', 'd';
EXEC SP_RENAME 'MyTest.e_new', 'e';

SELECT * FROM MyTest 

DROP TABLE MyTest
9
AHiggins

このリンクを見てください:

http://www.bobsgear.com/display/ts/Adding+Column+After+Another+Column+-+SQL+Server+2005

ご覧のとおり、答えは次のとおりです。

'データを一時テーブルに移動しないと不可能'

これは、SQL Server Management Studioが実際に行うことです。

1
jfaa

最初の答え、いいえ。

このスレッドによると、2番目の答え http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=58912テーブルの列を論理的に並べ替えることはできますか? 、列を作成してから、システムテーブルを編集して、テーブル内の列を並べ替えることができます。しかし、それは信じられないほど乱雑に見え、物事が壊れないことを私は信じません。

0
Tyler Clendenin

はい、ここに追加できますのは、懸念事項のクエリです。

ALTER table table_name ADD column column_name(new) datatype AFTER column_name
0
Shrikant Kapare

はい。デザインモードでドラッグアンドドロップするか、テーブル編集モードでコピーして貼り付けることができます


コメントに応えて、はい、これはUIを介したSQL Server Management Studioの場合であり、内部では、回避しようとしているドロップ/再作成を実行しているため、サーバーが実行しないと実行できません。あなたのために。

0
Beth