本文手把手教你如何在SQL Server中设置字段自增,详细讲解了利用IDENTITY属性定义自增列的方法,包括设置初始值和增长步长,还演示了如何手动插入指定ID数据以及临时关闭自增功能等实用操作,帮助开发者高效管理主键。
在数据库设计和开发中,自增字段(通常用于主键 ID)是一个非常常见的需求,它允许数据库自动为每一行数据分配一个唯一的编号,从而避免了开发人员手动管理 ID 的繁琐,也防止了数据插入时的 ID 冲突。
在 SQL Server 中,设置字段自增主要有两种方式:一种是使用 T-SQL 代码,另一种是使用 图形化界面(SSMS),SQL Server 2012 之后还引入了 序列(SEQUENCE) 这一更灵活的对象。
以下是详细的操作指南:

使用 T-SQL 代码设置(IDENTITY 属性)
这是最常用的方法,我们使用 IDENTITY 关键字来定义列,语法如下:
IDENTITY (起始值, 增量)
- 起始值:ID 的开始数字(例如从 1 开始)。
- 增量:每次插入新数据时 ID 增加的数值(通常为 1)。
示例:创建一个用户表,Id 字段自增
CREATE TABLE Users (
Id INT IDENTITY(1,1) PRIMARY KEY, -- 设置自增,从1开始,每次+1
UserName NVARCHAR(50) NOT NULL,
CreateTime DATETIME DEFAULT GETDATE()
);
插入数据测试:
INSERT INTO Users (UserName) VALUES ('张三');
INSERT INTO Users (UserName) VALUES ('李四');
查询结果: 你会发现,Id 字段自动变成了 1, 2,而无需你在插入时指定它。
使用 SSMS 图形化界面设置
如果你不喜欢写代码,或者正在修改现有的表结构,可以使用 SQL Server Management Studio (SSMS) 进行可视化设置。
- 打开 SSMS,在左侧对象资源管理器中找到你的表,右键点击选择 “设计”。
- 在表设计视图中,选中你想要设置为自增的列(
Id)。 - 在下方的 “列属性” 窗格中,找到 “标识规范” 这一栏。
- 找到 “是标识” 属性,将其值从 “否” 改为 “是”。
- 下方的 “标识增量” 和 “标识种子” 会自动显示默认值(通常是 1, 1)。
- 点击保存(Ctrl + S),表结构修改完成。
进阶用法——使用序列(SEQUENCE)
从 SQL Server 2012 开始,微软引入了 SEQUENCE 对象,与 IDENTITY 不同,SEQUENCE 不依附于任何表,你可以跨表共享同一个序列,或者将序列的值重置。
示例:创建一个序列
CREATE SEQUENCE dbo.UserSequence
START WITH 1
INCREMENT BY 1;
使用序列:
-- 插入数据时,手动获取序列的下一个值 INSERT INTO Users (Id, UserName) VALUES (NEXT VALUE FOR dbo.UserSequence, '王五');
常见问题与技巧
-
如何获取刚刚插入数据的自增 ID? 如果使用
IDENTITY字段,可以使用SCOPE_IDENTITY()函数:INSERT INTO Users (UserName) VALUES ('赵六'); SELECT SCOPE_IDENTITY() AS LastInsertedId; -
自增字段必须是主键吗? 虽然自增字段通常被设为主键以保证唯一性,但它也可以单独作为普通列存在,只要确保其唯一性即可。
-
如何重置自增的起始值? 如果数据被删除,但 ID 已经增长到了 1000,再次插入时 ID 会从 1001 开始,如果你希望重置 ID(例如从 1 开始),你需要删除该列并重新添加,或者使用
DBCC CHECKIDENT重新设置种子值(但这通常仅

