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

时间:2011-03-16 15:25:33

标签: sql-server alter-table

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

7 个答案:

答案 0 :(得分:6)

中等答案,是(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

答案 1 :(得分:5)

简单的答案是否定的。列顺序对您来说很重要吗?

答案 2 :(得分:0)

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


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

答案 3 :(得分:0)

第一个答案,不。

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

答案 4 :(得分:0)

看一下这个链接:

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

如您所见,答案是:

如果不将数据移动到临时表'

'是不可能的

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

答案 5 :(得分:0)

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

ALTER table table_name ADD column column_name(new) datatype AFTER column_name

答案 6 :(得分:0)

这在SQL Server Management Studio(SSMS)中是可能的。 在对象资源管理器中过滤表格,然后右键单击表格>设计

enter image description here

拖动左侧突出显示的箭头以移动列。