テーブルを削除して再作成せずに、SQL Serverの2つの既存の列の間に列を挿入してテーブルに列を追加できますか?
簡単な答えはノーです。列の順序が重要である理由はありますか?
中程度の長さの答え、はい(っぽい)ですが、それは醜いので、おそらくやりたくないでしょう。
注意:このコードは物理テーブルを作成します
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
このリンクを見てください:
http://www.bobsgear.com/display/ts/Adding+Column+After+Another+Column+-+SQL+Server+2005
ご覧のとおり、答えは次のとおりです。
'データを一時テーブルに移動しないと不可能'
これは、SQL Server Management Studioが実際に行うことです。
最初の答え、いいえ。
このスレッドによると、2番目の答え http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=58912 、 テーブルの列を論理的に並べ替えることはできますか? 、列を作成してから、システムテーブルを編集して、テーブル内の列を並べ替えることができます。しかし、それは信じられないほど乱雑に見え、物事が壊れないことを私は信じません。
はい、ここに追加できますのは、懸念事項のクエリです。
ALTER table table_name ADD column column_name(new) datatype AFTER column_name
はい。デザインモードでドラッグアンドドロップするか、テーブル編集モードでコピーして貼り付けることができます
コメントに応えて、はい、これはUIを介したSQL Server Management Studioの場合であり、内部では、回避しようとしているドロップ/再作成を実行しているため、サーバーが実行しないと実行できません。あなたのために。