【问题标题】:Auto-increment primary key in SQL tablesSQL 表中的自增主键
【发布时间】:2011-03-22 12:16:15
【问题描述】:

使用 Sql Express Management Studio 2008 GUI(不带编码),如何使主键自动递增?

让我解释一下:有一个表有一个名为“id”的列,该列的项目设置为主键。我想让这个列自动递增,但是怎么做呢?

干杯

【问题讨论】:

  • 当然您不应该通过 GUI 进行更改。您应该编写脚本来执行任务并将 htem 置于源代码控制中,以便您可以轻松地将数据库的更改部署到生产环境。 GUI 是用于更改表的非常糟糕的工具,尤其是当它们变大时。

标签: sql-server-2008 ssms


【解决方案1】:

虽然以下不是在 GUI 中执行此操作的方法,但您可以简单地使用 IDENTITY 数据类型(开始,增量)获得自动增量:

CREATE TABLE "dbo"."TableName"
(
   id int IDENTITY(1,1) PRIMARY KEY NOT NULL,
   name varchar(20),
);

insert 语句应该列出除 id 列之外的所有列(它将用自动递增的值填充):

INSERT INTO "dbo"."TableName" (name) VALUES ('alpha');
INSERT INTO "dbo"."TableName" (name) VALUES ('beta');

结果

SELECT id, name FROM "dbo"."TableName";

将会

id    name
--------------------------
1     alpha
2     beta

【讨论】:

    【解决方案2】:

    我认为有一种方法可以在这样的定义阶段做到这一点

    创建表员工( id int 身份, 名称 varchar(50), 主键(id) ).. 我正在尝试查看是否有办法更改现有表并将列设置为 Identity,这在理论上看起来是不可能的(因为现有值可能需要修改)

    【讨论】:

      【解决方案3】:

      对于那些根据以下答案更改后仍然无法保存的人,请执行以下操作:

      工具 -> 选项 -> 设计器 -> 表和数据库设计器 -> 取消选中“防止保存需要重新创建表的更改”框 -> 确定

      并尝试保存,因为它现在应该可以工作了

      【讨论】:

        【解决方案4】:
        1. 大概是您在设计表格。如果不是:右键单击表名 - “Design”。
        2. 单击所需的列。
        3. 在“Column properties”(底部)中,滚动到“Identity Specification”部分,展开它,然后切换“(Is Identity) ”到“”。

        【讨论】:

        • 注意:如果您将 Identity 列设置为另一列,您将无法切换或更改它,请确保您位于 Identity 列,因为其中只能有一个一张桌子。
        【解决方案5】:

        我在这台机器上没有 Express Management Studio,所以我将基于内存。我认为您需要将列设置为“IDENTITY”,并且属性下应该有一个[+]可以展开,并将自动增量设置为true。

        【讨论】:

          【解决方案6】:

          右键单击 SSMS 中的表,“设计”它,然后单击 id 列。在属性中,设置要播种的身份@例如1 并且增量为 1 - 保存就完成了。

          【讨论】:

          • “身份”和“身份种子”已禁用。如何启用它们?
          • 根据其他回复,您需要事先将该列标记为标识列 - 将 is identity 设置为“是”
          猜你喜欢
          • 2019-12-10
          • 2016-09-11
          • 1970-01-01
          • 2010-09-20
          • 1970-01-01
          • 2021-07-04
          • 1970-01-01
          • 1970-01-01
          • 2015-05-11
          相关资源
          最近更新 更多