一、使用 IDENTITY 属性
IDENTITY 属性是 SQL Server 内置的自动增量机制,适用于生成连续整型唯一标识。创建表时可通过以下语法定义标识列:
CREATE TABLE Users (
UserID INT IDENTITY(1,1) PRIMARY KEY,
UserName NVARCHAR(50)
);
其中 IDENTITY(1,1)
表示从 1 开始,每次递增 1。此方法适用于需要简单、高效生成主键的场景。
二、通过 GUID 生成唯一标识
对于分布式系统,可使用全局唯一标识符(GUID)确保跨服务器唯一性。SQL Server 提供两种函数:
- NEWID:生成随机 128 位 GUID
- NEWSEQUENTIALID:生成按顺序排列的 GUID,减少索引碎片
CREATE TABLE Orders (
OrderID UNIQUEIDENTIFIER DEFAULT NEWID PRIMARY KEY,
OrderDate DATETIME
);
GUID 占用空间较大,但能有效避免主键冲突。
三、自定义序列生成器
当需要特定格式的编号(如日期前缀)时,可创建专用表存储序列值:
CREATE TABLE SerialNo (
sCode VARCHAR(50) PRIMARY KEY,
sQZ VARCHAR(50), -
前缀
sValue VARCHAR(80) -
当前序列值
);
通过存储过程更新和获取序列值,例如生成类似 “20250309-0001” 的编号。
四、添加唯一性约束
无论采用何种生成方式,都应通过唯一索引或约束确保标识列的唯一性:
- 在 SSMS 中右键选择表设计 → 索引/键
- 添加新索引,指定列并选择“唯一键”类型
唯一约束可防止人工或程序错误导致的重复数据。
生成唯一标识列需根据场景选择合适方案:自增 IDENTITY 适合单机事务,GUID 适用于分布式系统,自定义序列则可实现复杂业务规则。最终需结合唯一约束保证数据完整性。