在 SQL Server 中从 SSMS 向导添加列

Aka*_* KC 3 sql-server-2008 sql-server ssms

今天,我正在阅读 Pinal Dave 的关于在...中添加列的博客。SQL SERVER让我惊讶的是,从 SSMS 向导添加列时,它来自以下过程:

  • 使用新列创建新表
  • 将上一个表中的数据插入到新表中
  • 重做所有的键和约束
  • 删除旧表重命名
  • 新表使用旧表的名称

为什么SQL SERVER要走这么耗时耗资源的过程?这么长的过程有什么好处吗....

Mar*_*ith 5

只有当您尝试在现有列之间插入新列时才会这样做。

如果你将它添加到表格的末尾,它只会做一个简单的

 ALTER TABLE T ADD some_column INT
Run Code Online (Sandbox Code Playgroud)

SSMS 这样做的原因没有 TSQL 语法来重新排序表中的列。只能通过创建新表来实现。

我同意这将是一个有用的补充。有时,在查看表定义时将新列显示在现有列旁边是有意义的(例如,在created列旁边放置一last_modified列或telephone_number与地址和电子邮件列分组)。

但是用于更改列顺序的相关连接项ALTER TABLE 语法被关闭为“无法修复”。除了重建表之外,唯一的解决方法是创建一个具有所需列顺序的视图。