我必须创建用于生成数据库中记录的唯一编号标识符的逻辑。在数据库中生成的ID是一个单独的列。
这时,当用户调用“创建记录”操作时,我保存新记录,获取其数据库ID,使用该ID生成记录号,然后将其放入编辑表单。
使用这种方式意味着所有实体字段都应该可以为空,以将记录保存到数据库。
我不喜欢这样我知道那应该是更好的方法。
是否有更好的做法来生成唯一的数字标识符?生成非唯一随机数的可能性是什么?
谢谢
最佳答案
您使用的仅保存空记录以获取ID的模式不是一个好方法。
我推荐的一种标准方法是让Create Record仅显示一个空表格(此时的ID通常为0)。用户填写表单,并且仅当用户单击“保存”时,数据才会提交到数据库。该ID应该是IDENTITY列。
您的方法存在的一个问题是,如果用户不填写表格,则会导致数据库中的记录不完整。当然,这使处理数据验证和完整性变得更加困难。
如果确实必须向用户显示ID,则另一种方法是使用单独的表,其中包含带有“下一个记录ID”列的行。该列可以增加并作为原子操作返回,并用于填充新记录的ID。您仍然没有创建真实记录,只需在“创建记录”操作中增加此“下一个记录ID”即可。使用这种方法,可以通过在“记录ID”表中为每个实体使用单独的行,对多个实体使用相同的方法。请记住,如果用户最终没有将记录保存到数据库,则ID仍将被“用完”。这些数字仍然是唯一的,并且将按时间顺序排列,但不一定是连续的。