在多人协作的系统里里,我们一般都希望系统能生成一个唯一不重复的随机码,用作主表主键,或者是父子表关联使用。
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)
1新建行,未保存前,无法知道identify。如果要用于作为外键与明细表关联,那就没办法立刻创建明细行。
2identify列不可以编辑,数据导入会造成麻烦。例如现在我要从别的系统,导入一个商品档案和入库单,商品档案跟入库单的商品,是有个关联字段。如果用identify,那你就无法导入这个字段,做不成关联了。
3identify列的增长不可控,数据迁移后造成有麻烦。例如现在一个新的商品表,然后你从旧表迁移了50条记录,其中最大的编号是88。那现在就麻烦了,下一次新建,自增编号是51,起码有51-88的记录,都会造成重复冲突。