Adding column between two other columns in SQL server
您能否在不删除和重新创建表的情况下将列插入到 SQL Server 中的两个现有列之间的表中?
中等长的答案,是的(ish),但它很丑,你可能不想这样做。
请注意:此代码创建一个物理表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 | ALTER table table_name ADD column column_name(new) datatype AFTER column_name |
这在 SQL Server Management Studio (SSMS) 中是可能的。
在对象资源管理器中过滤您的表格,然后右键单击表格 > Design
拖动左侧突出显示的箭头以移动您的列。
看看这个链接:
http://www.bobsgear.com/display/ts/在另一列之后添加列 - SQL Server 2005
如你所见,答案是:
'不将数据移动到临时表就不可能'
这正是 SQL Server Management Studio 实际所做的。
是的。您可以在设计模式下拖放它,或在编辑表格模式下复制和粘贴它
作为对评论的回应,是的,这是通过 UI 使用 SQL Server Management Studio,在后台,它正在执行您试图避免的删除/重新创建,所以不,如果没有服务器为你做这件事。
第一个答案,没有。
第二个答案,根据这个线程http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=58912,通过我可以在逻辑上重新排序表中的列吗?,您可以创建列然后重新排序通过编辑系统表在表中的列。但它看起来非常混乱,我不相信事情不会破裂。