是否可以向表中添加一列,将其插入SQL Server中的两个现有列之间,而不删除并重新创建表?
答案 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)