关于alter table:在SQL server 的另外两列之间添加列

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

enter

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


看看这个链接:

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,通过我可以在逻辑上重新排序表中的列吗?,您可以创建列然后重新排序通过编辑系统表在表中的列。但它看起来非常混乱,我不相信事情不会破裂。