【问题标题】:Add a column to specific position in MSSQL Server将列添加到 MSSQL Server 中的特定位置
【发布时间】:2011-12-15 13:05:21
【问题描述】:
ALTER TABLE Log ADD log_id bigint IDENTITY BEFORE cust_id_fk

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

【问题讨论】:

  • 表中列的“顺序”真的应该无关紧要 - 它们的物理存储顺序可能与您看到的不同。
  • 除了你的强迫症外,它没有不同。 OneTwo。仅供参考@Damien_The_Unbeliever 一些信息来支持你
  • 我希望我的专栏看起来很漂亮。

标签: sql-server


【解决方案1】:

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

【讨论】:

  • 这是一个主观的观点。但是您的问题被标记为 SQL Server,因此我提到了 SSMS。
  • 所以选择了你的答案,因为没有办法实现相同的
  • 这就是我们不再使用 MSSQL 的原因(只是说).. 可能会建议谷歌搜索“MongoDB”;)
【解决方案2】:

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

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

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

我曾多次使用这种方法处理表格,由于其中的数据,我无法使用 GUI 添加列。然后使用 Management Studio 的 GUI 移动列并简单地保存它们。

您将从确定的超时变为等待几秒钟。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      步骤:

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

      【讨论】:

        【解决方案5】:

        简答:不可能。

        但您可以尝试以下步骤:

        1. 在对象浏览器上右键单击表名
        2. 点击任务
        3. 点击drop并创建表
        4. 将列添加到您要添加的位置

        如果你有数据。复制数据并将其粘贴到 Excel 电子表格中,编辑电子表格以包含新列,编辑前 100 行并将数据粘贴回表格中。

        祝你好运

        【讨论】:

          【解决方案6】:
          【解决方案7】:

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

          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; 
          

          主键是另一个您可能会找到很多答案的问题。

          【讨论】:

          • 您正在考虑好的盒子,但这个答案不起作用。 SMSS 不允许重新订购。您必须删除并创建表。
          猜你喜欢
          • 2010-10-20
          • 1970-01-01
          • 1970-01-01
          • 2015-10-28
          • 2020-08-15
          • 2013-04-19
          • 1970-01-01
          • 2018-05-24
          • 2016-06-28
          相关资源
          最近更新 更多