【问题标题】:Unable to change Identity Specification to Yes in Sql Server table无法在 Sql Server 表中将身份规范更改为是
【发布时间】:2010-12-15 04:09:20
【问题描述】:

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

【问题讨论】:

  • 是的,这是一个愚蠢的问题。主键列未突出显示。

标签: sql-server


【解决方案1】:

检查您的列数据类型。

如果是varchar,则不能更改标识列。

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

【讨论】:

    【解决方案2】:

    您不能更改现有表中列的 IDENTITY 属性。您可以做的是使用 IDENTITY 属性添加一个新列,删除旧列,然后用旧列名称重命名新列。

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

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

    【讨论】:

      【解决方案3】:

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

      要这样做,请转到:

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

      【讨论】:

      • 如果你注意到我的问题的评论,我就知道问题出在哪里了。
      【解决方案4】:

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

      【讨论】:

      • 在我看来这是这个问题的真正答案。
      【解决方案5】:

      删除默认值或绑定。

      【讨论】:

        【解决方案6】:

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

        我已经成功地做到了。确认步骤如下:

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

        【讨论】:

          【解决方案7】:

          如您所见,身份规范的“是”值已禁用,因此上述其他答案对我不适用,但按照乔伊的回答,我发现我确实有一个默认值或绑定。我只是省略了默认值,我需要的一切都已启用。

          【讨论】:

            【解决方案8】:

            我花了一段时间才找到解决方案,起初我试图找到一种从这里更改值的方法(是的,因为我能够使用下一种方式更改它)

            然后通过右键单击-> 属性-> 表设计器-> 选择标识列

            这样做使“身份规范”变为“是”

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-07-16
              • 2019-04-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-01-09
              相关资源
              最近更新 更多