【问题标题】:Change table column order while preserving the foreign key constraint在保留外键约束的同时更改表列顺序
【发布时间】:2013-09-17 21:18:15
【问题描述】:

我在 SQL Server 2012 数据库表中有一个表,其中包含以下列

Id (PK)
Name 
UserId (FK)
Created
Updated

我想通过将 Name 和 UserId 交换为来更改列的顺序

Id (PK)
UserId (FK)
Name
Created
Updated

请注意,该表目前不包含任何数据。通常我不会编写 ALTER 脚本,只需使用 SQL Management Studio 来创建和修改我的表。我通常会简单地使用 DROP AND CREATE TO 菜单选项来重新创建表并修改列的顺序,但在这种情况下,外键约束阻止了我成功执行此操作。

有什么方法可以在保留外键约束的同时更改数据库列的顺序?我能看到的唯一其他解决方案是删除外键约束,重新创建表并再次添加外键约束。

【问题讨论】:

  • 不,没有“神奇”的方法可以做到这一点。如果您在 SSMS 中使用可视化设计器,它基本上会使用新的列顺序重新创建表,复制数据并删除旧表。但是为什么列顺序对您来说如此重要?在关系模型中,您应该依赖任何特定的顺序 - 顺序应该没有意义,真的
  • 我同意,顺序并不重要,数据库仍处于设计阶段,这只是 OCD 的问题 :) 如果这是已经部署在生产环境中的现有数据库,我会将该列添加到表的末尾。只是好奇是否有“魔术”方式。

标签: sql sql-server-2012 ssms


【解决方案1】:

磁盘上的顺序与 CREATE 中明显的列顺序不同(并且有固定的方法)。没有区别。

sys.columns.column_id 顺序与磁盘顺序不匹配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多