将列添加到MSSQL Server中的特定位置

时间:2011-10-26 07:49:55

标签: sql-server

ALTER TABLE Log ADD log_id bigint IDENTITY BEFORE cust_id_fk

上面的代码为最后一个位置添加了一个新列。我希望它被添加到第一个位置。我也希望将其作为主键。

7 个答案:

答案 0 :(得分:9)

您需要删除表并使用正确顺序的列重新创建它。如果您在SSMS中更改表,那么它可以为您生成更改脚本,然后您可以使用该脚本将更改部署到生产服务器。

答案 1 :(得分:3)

即使问题陈旧,也需要更准确地了解Management Studio。

您可以手动或使用Management Studio创建列。但是Management Studio将需要重新创建表格,并且如果您已经有太多数据,将导致超时,除非表格很轻,否则请避免。

要更改列的顺序,您只需在Management Studio中移动它们即可。这不应要求(很可能存在异常)Management Studio重新创建表,因为它很可能会更改表定义中列的排序。

我已经在很多场合以这种方式完成了这些表格,由于其中的数据,我无法使用GUI添加列。然后使用Management Studio的GUI移动列并简单地保存它们。

你会从有保证的时间到等待几秒钟。

答案 2 :(得分:0)

在MSSMS中,选择对象资源管理器中的表。右键单击并选择修改。 这将带来一个新选项卡,您可以在其中将列拖动到新的默认顺序。 保存并预先!完成。

答案 3 :(得分:0)

步骤:

  1. 将原始表重命名为tablename_temp
  2. 创建一个包含新列的新表
  3. 从tablename_temp
  4. 插入tablename select *
  5. 在新表上重新创建外键和其他约束

答案 4 :(得分:0)

简短的回答:这是不可能的。

但您可以尝试以下步骤:

  1. 右键单击对象资源管理器上的表名称
  2. 点击任务
  3. 点击下拉并创建表格
  4. 在要添加列的位置添加列
  5. 如果您有数据。复制数据并将其粘贴到Excel电子表格中,编辑电子表格以包含新列,编辑前100行并将数据粘贴回表格。

    古德勒克

答案 5 :(得分:0)

答案 6 :(得分:-2)

您必须创建另一个表并复制数据。但是看看“序数位置”并尝试更新它?

SELECT 
   ORDINAL_POSITION
  ,COLUMN_NAME
  ,DATA_TYPE
  ,CHARACTER_MAXIMUM_LENGTH
  ,IS_NULLABLE
  ,COLUMN_DEFAULT
FROM   
  INFORMATION_SCHEMA.COLUMNS 
WHERE   
  TABLE_NAME = 'Product' 
ORDER BY 
  ORDINAL_POSITION ASC; 

主键是另一个问题,您可以找到很多答案。