2

可能重复:
SQL Server 2008:无法在中间位置插入新列并更改数据类型

您好我正在使用 SQL SERVER 2008 和 2008 R2 我想使用 alter 命令在表中的特定位置添加一列。有什么方法可以使用关键字在特定位置添加列吗?谢谢!在高级。

4

2 回答 2

4

在sql server中不是很容易..

我认为最好的方法是在表的末尾添加列并创建一个具有所需列顺序的视图..

另外一个选项..

将所有数据放在临时表中并以正确的列顺序重新创建实际表,然后将数据从临时表插入回实际表

于 2012-10-01T10:39:47.763 回答
4

在脚本中没有快速的方法可以做到这一点,充其量您可以使用以下脚本自动化它,该脚本基本上采用您的新表模式(新列位于所需位置),将所有数据从old插入new,删除旧表,然后使用存储过程将新表重命名为旧表。

create table [NewTable]
(
    [old_column_1] int
    ,[new_column_1] varchar(max) -- new col at location
    ,[old_column_2] int
);

insert into [NewTable] ( [old_column_1], [old_column_2] ) 
select [old_column_1], [old_column_2] from [OldTable] (nolock);

drop table [OldTable];

sp_rename '[NewTable]', '[OldTable]';

正如其他人正确指出的那样,列的位置对数据库没有任何影响,但是出于各种个人原因,人类希望实现这一点,因此您有几个选择。您可以:

  1. 使用上面的脚本来处理这个过程。
  2. 允许将列附加到表的末尾并控制查询中的顺序。
  3. 基本上是选项 2 的扩展,使用视图来控制演示文稿中的顺序。
  4. 使用 SQL Server Management Studio 中的 GUI - 在将表格显示为网格时,您可以将列拖放到所需位置。
于 2012-10-01T10:51:47.207 回答