我如何auto increment
在数据库表中primary key
?SQL Server
我已经浏览了论坛,但看不到如何做到这一点。
我查看了属性,但看不到选项。我看到了一个答案,您转到Identity
规范属性并将其设置为 yes 并将其设置Identity increment
为1,但该部分显示为灰色,我无法将no更改为yes。
必须有一个简单的方法来做到这一点,但我找不到它。
我如何auto increment
在数据库表中primary key
?SQL Server
我已经浏览了论坛,但看不到如何做到这一点。
我查看了属性,但看不到选项。我看到了一个答案,您转到Identity
规范属性并将其设置为 yes 并将其设置Identity increment
为1,但该部分显示为灰色,我无法将no更改为yes。
必须有一个简单的方法来做到这一点,但我找不到它。
确保 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的
创建表时,可以IDENTITY
按如下方式创建列:
CREATE TABLE (
ID_column INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
...
);
该IDENTITY
属性将从数字 1 开始自动递增列。(请注意,列的数据类型必须是整数。)如果要将其添加到现有列,请使用ALTER TABLE
命令。
编辑:
测试了一下,我找不到通过各种表的列属性窗口更改身份属性的方法。我想如果你想让一个列成为标识列,你必须使用一个ALTER TABLE
命令。
您必须展开 Identity 部分以公开增量和种子。
编辑:我假设你有一个整数数据类型,而不是 char(10)。当我发布这个答案时,我会说这是合理且有效的
展开您的数据库,展开您的表格,右键单击您的表格并从下拉列表 中选择设计。
现在去它下面的Column properties向下滚动并找到Identity Specification,展开它,你会发现Is Identity make it Yes。现在选择它正下方的Identity Increment,给出您想要在其中增加的值。
也许我遗漏了一些东西,但为什么这不适用于 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的更多信息和选项
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”列指定值(将自动添加唯一值):
当您使用 Data Type: int 时,您可以选择要自动递增的行并转到列属性标签。在那里,您可以将身份设置为“是”。也可以在那里编辑自动增量的起始值。希望我能帮上忙;)
我遇到了这个问题,我已经创建了表,并且在不删除表的情况下无法更改它,所以我所做的是:(不确定他们何时实现此功能,但在 SQL 2016 中已实现)
右键单击对象资源管理器中的表:
Script Table as > DROP And CREATE To > New Query Editor Window
然后对 Josien 说的脚本进行编辑;滚动到底部CREATE TABLE
,找到您的主键并附IDENTITY(1,1)
加到逗号之前的末尾。运行脚本。
由于这个问题,DROP 和 CREATE 脚本对我也很有帮助。(生成的脚本处理。)
您可以在创建表时使用关键字IDENTITY
作为列的数据类型以及约束。
前任:PRIMARY KEY
StudentNumber IDENTITY(1,1) PRIMARY KEY
在这里,第一个“1”表示起始值,第二个“1”是递增值。
如果表已填充,则无法将列更改为 IDENTITY 列或将其转换为非 IDENTITY 列。您需要导出所有数据,然后您可以将列类型更改为 IDENTITY,反之亦然,然后再导入数据。我知道这是一个痛苦的过程,但我相信除了使用本文中提到的序列之外别无选择。
如果您希望 ID 元素是连续的,请小心。因为 SQLSERVER ID 可以跳跃 1000 。
示例:在重新启动之前 ID=11 重新启动后,您在表中插入新行,则 ID 将为 1012。