SQL Server Management Studio 2012中的自动增量主键

时间:2012-06-12 07:05:00

标签: sql-server sql-server-2012 identity

我如何auto increment primary key数据库表中的SQL Server,我已经浏览了论坛,但看不清楚。

我查看了属性但看不到一个选项,我看到了一个答案,你去了Identity规范属性并将其设置为yes并将Identity increment设置为1 ,但那部分是灰色的,我不能将否改为是。

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

11 个答案:

答案 0 :(得分:628)

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

enter image description here

只需运行此代码

-- 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的

答案 1 :(得分:157)

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

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

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

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

答案 2 :(得分:84)

您必须展开“身份”部分以显示增量和种子。

enter image description here

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

答案 3 :(得分:30)

展开您的数据库,右键单击您的表格,然后从下拉列表中选择设计ITlooks like this

现在转到下面的列属性向下滚动并找到身份规范,展开它,你会发现 Is Identity 使其成为是。现在选择下面的身份增量,给出你想要增加的值。 enter image description here

答案 4 :(得分:7)

也许我错过了一些东西,但为什么这不适用于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

的更多信息和选项

答案 5 :(得分:6)

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

答案 6 :(得分:2)

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)。

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

答案 7 :(得分:0)

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

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

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

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

由于this issue.(生成的脚本处理的内容),DROP和CREATE脚本对我也很有帮助。

答案 8 :(得分:0)

创建表时,可以将关键字IDENTITY用作列的数据类型以及PRIMARY KEY约束。
例如:

StudentNumber IDENTITY(1,1) PRIMARY KEY

在这里,第一个'1'表示起始值,第二个'1'表示增量值。

答案 9 :(得分:-1)

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

答案 10 :(得分:-1)

如果你想要ID元素是contigius,请小心。由于SQLSERVER ID可以跳过1000。

考试:重启ID = 11之前 重启后,在表中插入新行,然后id为1012。