在特定位置的SQL Server上添加列?

时间:2010-10-19 13:40:02

标签: sql sql-server sql-server-2005

我想知道是否有一种方法可以在SQL Server表创建后在特定位置添加一个列?

感谢。

9 个答案:

答案 0 :(得分:8)

您可以在Management-Studio中执行此操作。您可以通过在保存更改之前生成SQL脚本来检查完成此操作的方式。基本上它是通过以下方式实现的:

  • 删除所有外键
  • 使用添加的列
  • 创建新表
  • 将所有数据从旧表复制到新表
  • 放弃旧桌子
  • 将新表重命名为旧名称
  • 重新创建所有外键

答案 1 :(得分:5)

除了所有其他响应之外,请记住您可以在VIEW中重新排序和重命名列。因此,如果您发现有必要以一种格式存储数据但将其显示在另一种格式中,则只需将该列添加到表的末尾,然后创建一个表格视图,重新排序并重命名要显示的列。几乎在所有情况下,此视图的行为都与原始表格完全相同。

答案 2 :(得分:2)

最安全的方法是。

  • 使用正确的列顺序创建新表
  • 复制旧表中的数据。
  • 放下旧桌子。

答案 3 :(得分:2)

唯一安全的方法是创建一个新表(包含所需的列),迁移数据,删除原始表,并将新表重命名为原始名称。

这是Management Studio在您插入列时为您所做的事情。

答案 4 :(得分:2)

正如其他人所指出的那样,你可以通过创建一个临时表来移动数据并删除原始表然后重命名另一个表来实现这一点。这是愚蠢的事情。如果您的表很大,那么执行此操作可能非常耗时,并且用户将在此过程中被锁定。这是你想要对生产中的任何表做的事情。

绝对没有理由关心列在表中的顺序,因为你不应该依赖列顺序(如果其他人做了同样愚蠢的事情怎么办?)。没有查询应该使用select *或ordinal位置来获取列。如果你现在这样做,这是破坏的代码,需要立即修复,因为结果并不总是如预期的那样。例如,如果您确实在您想要的位置插入了一列,而其他人正在使用select *作为报告,则突然显示部分编号显示在用于保存价格的位置。

通过执行您想要执行的操作,您可以通过将列放在您个人想要的位置来解决比修复更多的问题。表中的列顺序应始终无关紧要。每次希望列以不同的顺序出现时,不应该这样做。

答案 5 :(得分:1)

使用Sql Server Management Studio,您可以在设计中打开表格,并将列拖放到您想要的任何位置

答案 6 :(得分:1)

正如凯恩所说,直接的方式是不可能的。您可以通过在设计模式中添加列并签出更改脚本来了解Management Studio如何执行此操作。

如果列不在最后一个位置,脚本基本上会删除表并重新创建它,新列位于所需位置。

答案 7 :(得分:1)

在数据库表中,列没有顺序。

编写正确的select语句并创建视图

答案 8 :(得分:0)

没有

基本上,SSMS幕后会复制表,约束等,删除旧表并重命名新表。

原因很简单 - 列不是要排序的(也不是行),所以你总是要在结果集中列出你想要的列(select *有点像黑客)