更改表中的列顺序时出现问题 (SQL Server 2008)
当我尝试更改此列列表时:
Nombre
Imagen
Descripcion
Activo
IdLineaProducto
进入此(IdLineaProducto 是第一个)
IdLineaProducto
Nombre
Imagen
Descripcion
Activo
SQL Server Management Studio 表示不允许保存更改,因为必须删除并重新创建表(西班牙语...)。 我可以在 SQL Server 2005 中执行此操作,但不能在 SQL Server 2008 中执行此操作。
在其他情况下也会发生同样的情况,例如尝试将 int 非标识列转换为标识列。 为什么会出现这种情况呢? 我该如何解决这个问题? 也许是一些配置错误的问题? SQL Server 中的一些新功能?
When I try to change this columns list:
Nombre
Imagen
Descripcion
Activo
IdLineaProducto
into this (IdLineaProducto is first)
IdLineaProducto
Nombre
Imagen
Descripcion
Activo
SQL Server Management Studio says that it's not allowed to save changes because the table must be deleted and recreated (in spanish...). I could do this in SQL Server 2005, but not in SQL Server 2008.
The same happens in other situations, like trying to transform an int non-identity column to identity. Why happens this? How can I resolve this? Maybe some misconfigured issue? Some new feature in SQL Server?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我找到了 此问题的解决方案。
请注意,它可能有 不良后果,例如丢失与此相关的其他表中的数据。
I found the solution to this problem.
Beware that it may have undesired consequences, like losing data in other tables related to this.
这就是它的工作方式...您只能将列添加到末尾,除非您
DROP
它并CREATE
它(通常将数据复制出来并返回, IDE 可能会提供帮助)。 但是为什么你想改变顺序呢? 即使它不理想,您的SELECT
等也可以处理这个...即(仅使用
SELECT *
很少是一个好主意)Re the
身份
; 同样,这对于列来说是基础 - 尽管在这种情况下,您可以复制数据,DROP
列,然后将ADD
列重新添加为IDENTITY< /code> (在右侧),然后将其复制回 - 但随后您会遇到
IDENTITY INSERT
和SEED
值的额外复杂情况(因此您不需要尝试获取现有身份值的重复项)。That is just the way it works... you can only add columns to the end, unless you
DROP
it andCREATE
it (normally copying the data out and back in, which the IDE might help with). But why do you want to change the order? Even if it isn't ideal, yourSELECT
etc can handle this... i.e.(it is rarely a good idea to just use
SELECT *
)Re the
IDENTITY
; again, this is fundamental to the column - although in this case you could copy the data out,DROP
the column, and re-ADD
the column asIDENTITY
(on the right hand side), and copy it back in - but then you have extra complications withIDENTITY INSERT
and theSEED
value (so you don't try to get duplicates of existing identity values).