问题更改表中的列顺序(SQL Server 2008)

时间:2009-05-30 22:04:12

标签: sql-server ddl

当我尝试更改此列列表时:

Nombre
Imagen
Descripcion
Activo
IdLineaProducto

进入此(IdLineaProducto是第一个)

IdLineaProducto
Nombre
Imagen
Descripcion
Activo

SQL Server Management Studio表示不允许保存更改,因为必须删除并重新创建表(以西班牙文...)。我可以在SQL Server 2005中执行此操作,但不能在SQL Server 2008中执行此操作。

在其他情况下也会发生同样的情况,例如尝试将int非标识列转换为标识。为什么会这样?我该如何解决这个问题?也许是一些配置错误的问题? SQL Server中的一些新功能?

2 个答案:

答案 0 :(得分:4)

我找到了solution to this problem

  

这是设计上的,可以很快   已在Management Studio中修复   取消检查财产。解决这个问题   管理工作室,转到工具 - >   选项然后转到Designer页面   并取消选中“防止保存更改   需要重新创建表格“。

请注意它可能有undesired consequences,就像丢失与此相关的其他表中的数据一样。

答案 1 :(得分:1)

这就是它的工作方式......你只能在最后添加列,除非你DROP它和CREATE它(通常将数据复制出来并重新输入,这是IDE可能有帮助)。但为什么你想改变订单?即使它不理想,你的SELECT等也可以处理这个......即

SELECT IdLineaProducto, Nombre, Imagen, Descripcion, Activo
FROM   TheTable
...

(仅使用SELECT *

是一个好主意

重新IDENTITY;再次,这是该列的基础 - 尽管在这种情况下,您可以复制数据,DROP列,并重新ADD列为IDENTITY(在右侧) ),并将其复制回来 - 但是你有IDENTITY INSERTSEED值的额外复杂性(所以你不要试图获得现有身份值的重复)。