没有合适的资源?快使用搜索试试~ 我知道了~
主键的生成方式主要有三种: 一. 数据库自动生成 二. GUID 三. 开发创建 严格讲这三种产生方式有一定的交叉点,其定位方式将在下面进行讲解。 第一种方式,主要将其定位在自增长的标识种子:可以设置起始数值,及增长步长。其优点在于使用时完全将并发任务交于数据库引擎管理,你不用担心存在多用户使用的时候会产生两个相同的ID的情况。其缺点也在于此,多数的数据库不提供直接获取标识ID的方式,对于开发人员来说产生ID的方式是透明的,开发人员几乎无法干预此项。对于数据的迁移也不是很方便。 由于存在上面的利弊,这种自增长的ID一般多用于设计基础表(系统运行的基础信息,如员工表)主键,而极少(根本不)用于主
资源详情
资源评论
资源推荐

sqlserver数据库主键的生成方式小结数据库主键的生成方式小结(sqlserver,mysql)
主键的生成方式主要有三种:
一. 数据库自动生成
二. GUID
三. 开发创建
严格讲这三种产生方式有一定的交叉点,其定位方式将在下面进行讲解。
第一种方式,主要将其定位在自增长的标识种子:可以设置起始数值,及增长步长。其优点在于使用时完全将并发任务交于数
据库引擎管理,你不用担心存在多用户使用的时候会产生两个相同的ID的情况。其缺点也在于此,多数的数据库不提供直接获
取标识ID的方式,对于开发人员来说产生ID的方式是透明的,开发人员几乎无法干预此项。对于数据的迁移也不是很方便。
由于存在上面的利弊,这种自增长的ID一般多用于设计基础表(系统运行的基础信息,如员工表)主键,而极少(根本不)用
于主从表主、外键,因为在产生主从表数据并关联时,必须确定主表的ID,然后才能定位从表的关联ID。
例(MsSQL):
代码如下:
–创建测试表
CREATE TABLE [Identity](
Id INT IDENTITY(1,2) NOT NULL PRIMARY KEY,–种子的起始值1,步长2
Number VARCHAR(20) UNIQUE NOT NULL,
Name VARCHAR(20) NOT NULL,
Password VARCHAR(20) DEFAULT(123),
Description VARCHAR(40) NULL
)
–插入记录
INSERT INTO [Identity](Number,Name,Description) VALUES(‘001′,’1st’,’Id=1,因为起始值1′)
INSERT INTO [Identity](Number,Name,Description) VALUES(‘002′,’2nd’,’Id=3,因为起始值1,步长2′)
INSERT INTO [Identity](Number,Name,Description) VALUES(‘003′,’3rd’,’Id=5,由于字符长度超长,报错插入失败,造成此Id
产生后被放弃’)
INSERT INTO [Identity](Number,Name,Description) VALUES(‘004′,’4th’,’Id=7 not 5,因为第三条记录插入失败’)
–检索记录,查看结果
SELECT * FROM [Identity]
结果:
(1 行受影响)
(1 行受影响)
消息 8152,级别 16,状态 14,第 3 行
将截断字符串或二进制数据。
语句已终止。
(1 行受影响)
(3 行受影响)
Id Number Name Password Description
1 001 1st 123 Id=1,因为起始值1
3 002 2nd 123 Id=3,因为起始值1,步长2
7 004 4th 123 Id=7 not 5,因为第三条记录插入失败
第二种方式,GUID即Globally Unique Identifier,也称为UUID(Universally Unique IDentifier),全球唯一标识符,GUID一
般由32位十六进制的数值组成,其中包含网卡地址、时间及其他信息。任何两台电脑都不会产生相同的GUID,他的优点在唯
一性,当需要数据库整合时,能节约不少劳动力。比如总公司和分公司各自系统独立运行,所有分公司数据定期需要提交到总
部,可以避免合并数据时主键冲突问题,同时GUID还兼具自增长标识种子特点,无需开发人员太多的关注。但是GUID信息量
大,占用空间也大,关联检索时,估计效率上也不是很高,对于32位的十六进制其可读性也差,虽然主键有对用户的无意义
性,但是在设计或者调试交流时很不方便。
从长远考虑,为了保证数据的可移植性,一般还是会选择使用GUID来作为主键。
例(MsSQL):
代码如下:
–创建测试表
CREATE TABLE GUID(
Id UNIQUEIDENTIFIER NOT NULL PRIMARY KEY,–当然你也可以用字符串来保存
Number VARCHAR(20) UNIQUE NOT NULL,
Name VARCHAR(20) NOT NULL,
Password VARCHAR(20) DEFAULT(123)
)
–插入记录
INSERT INTO GUID(Id,Number,Name) VALUES(NewID(),’001′,’1st’)
INSERT INTO GUID(Id,Number,Name) VALUES(NewID(),’002′,’2nd’)
INSERT INTO GUID(Id,Number,Name) VALUES(NewID(),’003′,’3rd’)
–检索记录,查看结果
SELECT * FROM GUID
结果:



















weixin_38723373
- 粉丝: 7
- 资源: 918

上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0