A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐传任 中级黑马   /  2012-9-23 10:55  /  1621 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

现在只会插入自增长的主键,例如
create table Users
(
userID int identity(1,1) primary key,
...
)
这样插入的是从1开始,每次加1有顺序的ID,怎样才可以生成随机的主键ID呢?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 李阳_TickTock 于 2012-9-24 09:34 编辑

数据库中,主键有两种选用策略
1.业务主键
2.逻辑主键
业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等
逻辑主键是使用没有任何业务意义的字段做主键。因为很难保证业务主键不会重复(身份证号重复)、不会变化(账号升位),因此推荐用逻辑主键。

GUID算法是一种可以产生唯一标示的高效算法,现在很多项目都倾向于用GUID做主键
GUID的优点是:效率高,数据导入导出方便。缺点是:占用空间大,不易读。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
想要独一无二的主键?可以在下面设置一个自动增加的属性。
每当增加一个。数字就自动加1.

     但是我觉得还是 Guid比较好。那么多的随机。根据电脑硬件的各方面的生成随机数。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
在 SQL Server 中使用 GUID 来生成随机的id.
在 SQL Server 的表定义中将列类型指定为 uniqueidentifier,则列的值就为 GUID 类型。
可以使用 NewID() 函数可以产生 GUID 唯一值,将 uniqueidentifier 的列的默认值设为 NewID(),这样当新行插入表中时,会自动生成此列 GUID 值。


评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马