在SQL Server中的其他两列之间添加列

问题描述 投票:5回答:6

是否可以向表中添加一列,将其插入SQL Server中的两个现有列之间,而不删除并重新创建表?

sql-server alter-table
6个回答
6
投票

简单回答是不。列顺序对您来说很重要吗?


7
投票

中等答案,是(ish),但它很丑,你可能不想这样做。

请注意:此代码创建一个物理表

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

0
投票

第一个答案,没有。

第二个答案,根据这个线程http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=58912,通过Can I logically reorder columns in a table?找到,你可以创建列,然后通过编辑系统表重新排序表中的列。但它看起来非常混乱,我不相信事情不会破裂。


0
投票

看看这个链接:

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

如您所见,答案是:

'如果不将数据移动到临时表,则无法实现'

这是SQL Server Management Studio实际执行的操作。


0
投票

是。您可以在设计模式下拖放它,或者以编辑表模式复制并粘贴它


回应评论,是的,这是通过用户界面的SQL Server Management Studio进行的,它正在做你想要避免的删除/重新创建,所以不,你不能没有服务器这样做为了你。


0
投票

是的,你可以在这里添加您的问题的查询:

ALTER table table_name ADD column column_name(new) datatype AFTER column_name
© www.soinside.com 2019 - 2024. All rights reserved.