这可能是一个愚蠢的问题,但为什么我不能将身份规范或(身份)从“否”更改为“是”?
答案 0 :(得分:26)
检查您的列数据类型。
如果是varchar
,则无法更改标识列。
要更改标识列,它应具有int
数据类型。
答案 1 :(得分:15)
您无法更改现有表上列的IDENTITY属性。您可以做的是添加一个带有IDENTITY属性的新列,删除旧列,并使用旧列名重命名新列。
当然,然后(对某些人来说)发生的事情是,他们不喜欢新列出现在列列表的“末尾”这一事实(即使你不应该关心列的位置)列 - 您应该始终使用他们的名字)。在这种情况下,您需要执行相同的技巧,但在更高级别 - 创建一个新表(更改列定义),将数据从旧表复制到新表,删除旧表,并重命名新表
我认为SSMS仍然试图通过在幕后做第二个技巧来假装它是可能的。
答案 2 :(得分:13)
您可以禁用选项“阻止保存需要重新创建表格的更改” 但msdn。强烈建议不要这样做。
这样做去:
工具 - >选项 - >设计师 取消选中:“阻止保存需要重新创建表的更改”
答案 3 :(得分:10)
同时检查以确保列上没有默认值或绑定。
答案 4 :(得分:1)
删除默认值或绑定。
答案 5 :(得分:0)
继上面的Damien_The_Unbeliever评论后,您可以在Visual Studio的设计界面中编辑列顺序。
我成功地做到了这一点。要确认,步骤是:
答案 6 :(得分:0)
如您所见,身份规范的yes值已禁用,因此上述其他答案对我不适用,但在Joy的回答之后,我看到我确实具有默认值或绑定。我只是省略了默认值,并且启用了我需要的所有内容。