推荐一个使用Guid生成36位不重复随机码做主键的方法

发表日期: 2023-02-24

1.需求

在多人协作的系统里里,我们一般都希望系统能生成一个唯一不重复的随机码,用作主表主键,或者是父子表关联使用。

2.解决方法

2.1狐表的Rand方法

可以用狐表的Rand.NextString()方法,最大生成32位。

Dim s As String = Rand.NextString(12) '生成长度为12的随机字符串,最大支持32位
Output.show(s)

2.2更主流的Guid方法

在更多系统,会使用一种叫Guid码的东西

定义:GUID(Global unique identifier)算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。其格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制数。

例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。

Dim s As String = Guid.NewGuid.ToString()
Output.show(s)

3.为什么不用狐表自带的identify列做主键?

1新建行,未保存前,无法知道identify。如果要用于作为外键与明细表关联,那就没办法立刻创建明细行。

2identify列不可以编辑,数据导入会造成麻烦。例如现在我要从别的系统,导入一个商品档案和入库单,商品档案跟入库单的商品,是有个关联字段。如果用identify,那你就无法导入这个字段,做不成关联了。

3identify列的增长不可控,数据迁移后造成有麻烦。例如现在一个新的商品表,然后你从旧表迁移了50条记录,其中最大的编号是88。那现在就麻烦了,下一次新建,自增编号是51,起码有51-88的记录,都会造成重复冲突。


随便看看
商务联系QQ : 2385350359

Copyright 2016-2023 江门蓬江区华越科技公司 版权所有 | 承接软件定制开发,欢迎联系
粤ICP备19148806号-5