一尘不染

为什么不能重新排序SQL Server列?

sql

我有一张装有FK的旧桌子。我想添加一个新列。我想将此新列作为我的主键。所以我想我可以将该列插入为第一列,也可以将其插入到表的末尾,然后再对列进行重新排序。

但是SQL Server ManagementStudio不允许我这样做。我知道我无法做到这一点,并且该列顺序在SQL中几乎完全无关紧要。

我想知道的是,结果是什么…我的意思是,我可以删除一列…与添加新列不一样吗?

我只是想了解发生了什么。我也很难找到相关的文档。如果有人能指出我的正确方向。


阅读 148

收藏
2021-03-17

共1个答案

一尘不染

至于 _为什么_不能对列进行重新排序(除了已发布的特定于SSMS的答案),我不确定您会找到一个规范的答案,除了SQL标准不包含这样做的编程语法之外,这是唯一的方法重新定义表的架构(包括其列的顺序)是删除表并重新创建它。因此,任何提供列“重新排序”的管理应用程序都极有可能在幕后进行此操作(例如,链接问题中指出的SSMS的“设计视图”)。

有人用SQL规范的较深的造诣会反驳这一点,如果有
不提供重新排序列机制为标准DDL的一部分明确的原因,但我只能猜想,因为查询其结果集定义列的顺序呢,并且DBMS根据其各自的实现来控制物理存储,因此逻辑列顺序本质上是没有意义的,因此不需要这种机制。

2021-03-17