MSSQL中基于主键自动生成机制研究(mssql 主键生成机制)
MSSQL中基于主键自动生成机制研究
Microsoft SQL Server是一种体系中许多数据库系统所使用的非常流行的关系数据库管理系统(RDBMS),已被广泛应用于各种应用程序所需要的数据存储和操作。一个关系数据库由多个表组成,每个表都由若干列组成,列或属性描述了该表中的数据,而每个表都有一个主键自动生成机制,其用于标识表中的每一行数据。
MSSQL中的主键自动生成机制主要支持三种主键生成,即自增(Identity)、GUID和序列(Sequence)。
1)自增(Identity),也称作自动编号,是数据库常用的一种自动增长主键,具有自增特性,一般用于记录信息。我们可以在创建表时,为主键定义自增特性,这样不管插入的数据如何,主键值总是依次排列,不重复,不重复集。在MSSQL中实现该功能需要在建表时定义IDENTITY:
`create table T_People
(
ID int primary key identity,
Name varchar(50) not null
)`
2)GUID,全称为全局唯一标识符(globally-unique identifier),用于标识表中每一行数据的唯一性。GUID常用15和16进制数,但MSSQL是以16进制字符串格式存储和识别。GUID主键用于确保数据表中不会出现重复的值,并且在网络上能够动态添加时保证每一条记录唯一。在MSSQL中实现该功能需要在建表时定义UNIQUEIDENTIFIER:
`create table T_People
(
GUID uniqueidentifier primary key default newid(),
Name varchar(50) not null
)`
3)序列(Sequence),它是一个在一个定义的范围内依次产生一组数的集合,它的行为类似于自增,但与自增不同的是,它有起止值、有步长、可以从当前值重新向后排序等特性。在MSSQL中实现该功能需要使用CREATE SEQUENCE语句创建序列,并授权定义的程序可以使用该对象,然后使用NEXT VALUE FOR语句调用序列:
`–创建序列
create sequence Sequence_People
start with 1
increment by 1
–调用序列
INSERT INTO T_People VALUES(next value for Sequence_People,’张三’)`
一般来说,MSSQL用户在主键生成中会选择自增或GUID作为首选,自增用于数据量较小的情境,而GUID比自增更适合于数据量较大的情况,而序列有更多的灵活性,可以实现游标检索等操作,适合嵌入代码中进行动态插入主键操作。