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

Led*_*key 416 sql-server identity sql-server-2012

我如何auto incrementprimary key一个SQL Server数据库表,我已经通过论坛看看,但不能看到.

我查看了属性,但看不到一个选项,我看到了一个答案,你去了Identity规范属性并将其设置为是并设置Identity increment为1,但该部分显示为灰色,我无法更改不,是的.

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

Raa*_*aab 666

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

在此输入图像描述

或者 只是运行此代码

-- 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)
Run Code Online (Sandbox Code Playgroud)

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

图像参考fifo's

  • 只需稍加修正:`IDENTITY`属性可以应用于任何数值数据类型(因此它可以是`tinyint`,`smallint`,`int`,`bigint`,`numeric`,`decimal`),唯一的约束是它不能代表小数(所以**不能是**`float`或`real`,既不是'numeric`或`decimal`*,也不是零刻度*)和ofc,身份spec应与所选数据类型兼容. (19认同)
  • 如果无法修改值,请转到"工具 - 选项 - 设计器",然后取消选中"阻止保存需要重新创建的更改"选项. (6认同)
  • 工作,前提是没有外键等 (4认同)
  • 我只是想补充一下,如果你已经在你的标识栏上设置了一个默认值,那么(Is Identity)仍然是灰色的.删除默认值,它再次可用. (3认同)

Jos*_*ien 168

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

CREATE TABLE (
  ID_column INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
  ...
);
Run Code Online (Sandbox Code Playgroud)

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

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

  • 根据[this](http://stackoverflow.com/a/4862427/2218697)的作者的建议,此create table语法是“良好实践”,希望对您有所帮助。 (2认同)

gbn*_*gbn 84

您必须展开"标识"部分以显示增量和种子.

在此输入图像描述

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

  • "是"是灰色的,因为它是`char(10)`(来自刚发布的评论) (2认同)

小智 33

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

现在转到下面的列属性向下滚动并找到身份规范,展开它,你会发现Is Identity是否为Yes.现在选择下面的Identity Increment,给出你想要增加的值. 在此输入图像描述

  • 这对我来说似乎是正确的答案,只是将数据类型设为 int 并不能解决问题,对吗? (2认同)

Tec*_*Joe 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
Run Code Online (Sandbox Code Playgroud)

在引用INSERT命令时引用squence时,只需使用:

NEXT VALUE FOR blah.blahsequence
Run Code Online (Sandbox Code Playgroud)

有关SEQUENCE的更多信息和选项


小智 6

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


Abd*_*leh 6

CREATE TABLE Persons (
    Personid int IDENTITY(1,1) PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);
Run Code Online (Sandbox Code Playgroud)

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

在上面的例子中,IDENTITY 的起始值是 1,它会为每条新记录递增 1。

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

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