首页  >  问答  >  正文

根据MySQL的行中的值创建唯一ID

我正在为一个家谱项目创建一个 Web 应用程序。我希望添加到数据库中的每个人都有一个唯一的 ID,该 ID 基于其姓氏的前 3 个字符(为了解释起见,我们称之为“姓氏字符串”),并与自动增量(从00001 代表每个唯一的“姓氏字符串”)。

例如 - 一个人的姓氏是“Smith”。姓氏字符串将为 SMI,并且由于它们是第一个姓氏字符串“SMI”,因此完整参考将为 SMI00001。另一个人的姓氏是 Black,因此他们的姓氏字符串为 BLA,并且因为他们是第一个具有姓氏字符串 BLA 的人,所以他们的参考将是 BLA00001。第三个人的姓氏也是 Smith - 他们是第二个具有 SMI 姓氏字符串的人,因此他们的参考号应该是 SMI00002。

此唯一 ID 将在人员 URL 中使用,供数据库中的人员搜索并在人员之间创建关系。

我不知道如何从逻辑上解决这个问题。

我还没有尝试过任何东西。这超出了我的想象!

P粉541796322P粉541796322320 天前324

全部回复(1)我来回复

  • P粉225961749

    P粉2259617492023-12-28 00:08:17

    此方法比较粗略,通常您应该使用数据库自​​动递增(数字)或自动生成唯一 ID,例如 md5(time().'randomsalt'.$username)。

    但是如果您必须使用 XXX00000 格式,您将需要以下功能:

    • 检查数据库中是否有BLA00001
    • 如果是,请检查 BLA00002 等。
    • 如果否,则创建新条目

    一段时间后这会非常慢,而且每个名字最多有 99999 次存在的机会,之后你需要将 BLA 更改为 BL1、BL2 等。

    回复
    0
  • 取消回复