无法在Sql Server表中将标识规范更改为是

时间:2010-12-15 04:09:21

标签: sql-server

这可能是一个愚蠢的问题,但为什么我不能将身份规范或(身份)从“否”更改为“是”?

7 个答案:

答案 0 :(得分:26)

检查您的列数据类型。

如果是varchar,则无法更改标识列。

要更改标识列,它应具有int数据类型。

答案 1 :(得分:15)

您无法更改现有表上列的IDENTITY属性。您可以做的是添加一个带有IDENTITY属性的新列,删除旧列,并使用旧列名重命名新列。

当然,然后(对某些人来说)发生的事情是,他们不喜欢新列出现在列列表的“末尾”这一事实(即使你不应该关心列的位置)列 - 您应该始终使用他们的名字)。在这种情况下,您需要执行相同的技巧,但在更高级别 - 创建一个新表(更改列定义),将数据从旧表复制到新表,删除旧表,并重命名新表

我认为SSMS仍然试图通过在幕后做第二个技巧来假装它是可能的。

答案 2 :(得分:13)

您可以禁用选项“阻止保存需要重新创建表格的更改” 但msdn。强烈建议不要这样做。

这样做去:

工具 - >选项 - >设计师 取消选中:“阻止保存需要重新创建表的更改”

答案 3 :(得分:10)

同时检查以确保列上没有默认值或绑定。

答案 4 :(得分:1)

删除默认值或绑定。

答案 5 :(得分:0)

继上面的Damien_The_Unbeliever评论后,您可以在Visual Studio的设计界面中编辑列顺序。

我成功地做到了这一点。要确认,步骤是:

  1. 使用IDENTITY属性添加新列
  2. 删除旧列,
  3. 使用旧列名重命名新列。
  4. (可选)重新排序列以从Visual Studio获取IDENTITY列。

答案 6 :(得分:0)

tuple

如您所见,身份规范的yes值已禁用,因此上述其他答案对我不适用,但在Joy的回答之后,我看到我确实具有默认值或绑定。我只是省略了默认值,并且启用了我需要的所有内容。