我有一张带有FK的旧桌子。我想添加一个新的列。我想把这个新的列我的主键。所以我以为我可以将该列插入第一个列,或将其插入到表的末尾,然后重新排序我的列。
但sql Server Management Studio不允许我这样做。我明白我不能这样做,而且这个列顺序在sql中几乎完全不相关。
我想知道的是怎么来的…我的意思是,我可以放一列…不是添加新的一样吗?
我只是想了解发生了什么。我也很难找到文档。如果有人可以指出我的方向很好。
解决方法
您可能对
this question的答案感兴趣。
至于为什么你不能重新排列列(除了发布的SSMS特定答案之外),我不确定你会找到一个规范的答案,除了sql标准不包含编程语法这样做 – 唯一的方法重新定义表的模式(包括其列的顺序)是删除表并重新创建它。所以提供列“重新排序”的任何管理应用程序很有可能在幕后进行(例如SSMS的设计视图,如链接的问题中所指出的)。
如果有明确的原因没有提供列重新排序机制作为标准DDL的一部分,那么有更深入了解sql规范的人可能会与此相矛盾,但是我只能推测,因为查询定义了其结果集中的列的顺序,并且DBMSs根据其各自的实现来控制物理存储,逻辑列顺序基本上是无意义的,并且不保证这样的机制。