2012-10-01 91 views
2

可能重复:
SQL Server 2008 : Cannot Insert new column in the middle position and change data type如何在表中的特定位置添加一列?

你好我使用SQL Server 2008 & 2008 R2我想在一个表中使用alter命令的特定位置添加一列。有没有什么方法可以在特定位置添加一列的关键字?谢谢!在先进的。

+2

**顺便说一下:**列的顺序在关系模型中是无关紧要的,您不应该在数据库设计中考虑该顺序。 –

+2

@MahmoudGamal - 我想能够做到这一点[出于这里的原因](https://connect.microsoft.com/SQLServer/feedback/details/739788/alter-table-syntax-for-changing-列顺序) –

+1

@MartinSmith - 很好,我投了赞成票。 –

回答

3

在SQL服务器很容易..

我认为最好的办法是在表的末尾添加列,并创建一个列..

另一种选择的期望顺序的图。 。

把所有的数据在一个临时表,并重新创建正确的列顺序实际的表,然后从临时表

3

有没有快捷方式脚本来完成这个插入的数据传回实际的表,最好你可以自动化它下面的脚本基本上将您的新表格架构(将新列放在所需的位置)将旧的中的所有数据插入到新的中,删除旧表格,然后使用存储过程将新表格重命名为旧。

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 - 当将表格显示为网格时,可以将列拖放到所需的位置。
相关问题