525

我如何auto increment在数据库表中primary keySQL Server我已经浏览了论坛,但看不到如何做到这一点。

我查看了属性,但看不到选项。我看到了一个答案,您转到Identity规范属性并将其设置为 yes 并将其设置Identity increment1,但该部分显示为灰色,我无法将no更改为yes

必须有一个简单的方法来做到这一点,但我找不到它。

4

11 回答 11

812

确保 Key 列的数据类型是int,然后手动设置标识,如图所示

在此处输入图像描述

或者 只是运行这段代码

-- ID is the name of the  [to be] identity column
ALTER TABLE [yourTable] DROP COLUMN ID 
ALTER TABLE [yourTable] ADD ID INT IDENTITY(1,1)

代码将运行,如果ID不是表中的唯一列

图像参考fifo的

于 2012-06-12T07:19:35.270 回答
223

创建表时,可以IDENTITY按如下方式创建列:

CREATE TABLE (
  ID_column INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
  ...
);

IDENTITY属性将从数字 1 开始自动递增列。(请注意,列的数据类型必须是整数。)如果要将其添加到现有列,请使用ALTER TABLE命令。

编辑:
测试了一下,我找不到通过各种表的列属性窗口更改身份属性的方法。我想如果你想让一个列成为标识列,你必须使用一个ALTER TABLE命令。

于 2012-06-12T07:21:33.870 回答
94

您必须展开 Identity 部分以公开增量和种子。

在此处输入图像描述

编辑:我假设你有一个整数数据类型,而不是 char(10)。当我发布这个答案时,我会说这是合理且有效的

于 2012-06-12T07:19:07.597 回答
45

展开您的数据库,展开您的表格,右键单击您的表格并从下拉列表 中选择设计。它看起来像这样

现在去它下面的Column properties向下滚动并找到Identity Specification,展开它,你会发现Is Identity make it Yes。现在选择它正下方的Identity Increment,给出您想要在其中增加的值。 在此处输入图像描述

于 2013-04-19T19:28:19.623 回答
10

也许我遗漏了一些东西,但为什么这不适用于 SEQUENCE 对象?这不是你要找的吗?

例子:

CREATE SCHEMA blah.
GO

CREATE SEQUENCE blah.blahsequence
START WITH 1
INCREMENT BY 1
NO CYCLE;

CREATE TABLE blah.de_blah_blah
(numbers bigint PRIMARY KEY NOT NULL
......etc

在说 INSERT 命令中引用序列时,只需使用:

NEXT VALUE FOR blah.blahsequence

SEQUENCE的更多信息和选项

于 2013-09-25T15:30:24.083 回答
10
CREATE TABLE Persons (
    Personid int IDENTITY(1,1) PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

MS SQL Server 使用 IDENTITY 关键字来执行自动增量功能。

在上面的示例中,IDENTITY 的起始值为 1,每增加一条新记录,它就会增加 1。

提示:要指定“Personid”列应从值 10 开始并以 5 为增量,请将其更改为 IDENTITY(10,5)。

要将新记录插入“Persons”表,我们不必为“Personid”列指定值(将自动添加唯一值):

于 2020-03-12T08:30:10.267 回答
7

当您使用 Data Type: int 时,您可以选择要自动递增的行并转到列属性标签。在那里,您可以将身份设置为“是”。也可以在那里编辑自动增量的起始值。希望我能帮上忙;)

于 2012-12-07T07:03:33.847 回答
4

我遇到了这个问题,我已经创建了表,并且在不删除表的情况下无法更改它,所以我所做的是:(不确定他们何时实现此功能,但在 SQL 2016 中已实现)

右键单击对象资源管理器中的表:

Script Table as > DROP And CREATE To > New Query Editor Window

然后对 Josien 说的脚本进行编辑;滚动到底部CREATE TABLE,找到您的主键并附IDENTITY(1,1)加到逗号之前的末尾。运行脚本。

由于这个问题,DROP 和 CREATE 脚本对我也很有帮助。(生成的脚本处理。)

于 2018-01-26T01:08:18.060 回答
2

您可以在创建表时使用关键字IDENTITY作为列的数据类型以及约束。 前任:PRIMARY KEY

StudentNumber IDENTITY(1,1) PRIMARY KEY

在这里,第一个“1”表示起始值,第二个“1”是递增值。

于 2019-12-16T10:54:42.820 回答
1

如果表已填充,则无法将列更改为 IDENTITY 列或将其转换为非 IDENTITY 列。您需要导出所有数据,然后您可以将列类型更改为 IDENTITY,反之亦然,然后再导入数据。我知道这是一个痛苦的过程,但我相信除了使用本文中提到的序列之外别无选择。

于 2014-01-03T11:00:09.907 回答
1

如果您希望 ID 元素是连续的,请小心。因为 SQLSERVER ID 可以跳跃 1000 。

示例:在重新启动之前 ID=11 重新启动后,您在表中插入新行,则 ID 将为 1012。

于 2017-03-11T12:03:08.797 回答