关于alter table:在SQL server 的另外两列之间添加列
Adding column between two other columns in SQL server
您能否在不删除和重新创建表的情况下将列插入到 SQL Server 中的两个现有列之间的表中?
相关讨论
- 另请参阅 stackoverflow.com/questions/1610/... 和 stackoverflow.com/questions/4402312/...
- 采用表格设计并相应地拖动列
中等长的答案,是的(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 |
相关讨论
- 您的答案是针对 MySQL 的。他们询问有关 SQL Server 的问题。
- 嗯,还是很感谢这个,我需要这个\\'
这在 SQL Server Management Studio (SSMS) 中是可能的。
在对象资源管理器中过滤您的表格,然后右键单击表格 > Design

拖动左侧突出显示的箭头以移动您的列。
看看这个链接:
http://www.bobsgear.com/display/ts/在另一列之后添加列 - SQL Server 2005
如你所见,答案是:
'不将数据移动到临时表就不可能'
这正是 SQL Server Management Studio 实际所做的。
是的。您可以在设计模式下拖放它,或在编辑表格模式下复制和粘贴它
作为对评论的回应,是的,这是通过 UI 使用 SQL Server Management Studio,在后台,它正在执行您试图避免的删除/重新创建,所以不,如果没有服务器为你做这件事。
相关讨论
- 这将在后台进行删除/重新创建。
- 我假设如果您使用 SQL Management Studio,您会这样做。您确定 SQL Server 不会在幕后进行删除和重新创建吗?我有一种感觉,它将数据复制到临时表中,然后在将数据复制回来之前删除并重新创建表。我现在无法访问 SQL Server,否则我会启动 SQL Profiler 并尝试您的建议。
- 我真的在寻找一种在 ALTER TABLE 语句中执行此操作的方法,这就是 SQL Management Studio 所做的。
第一个答案,没有。
第二个答案,根据这个线程http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=58912,通过我可以在逻辑上重新排序表中的列吗?,您可以创建列然后重新排序通过编辑系统表在表中的列。但它看起来非常混乱,我不相信事情不会破裂。
相关讨论
- 在 SQL Server 2000 之后的版本中,您无法编辑系统表。