1

我正在创建一个需要存储项目 ID 的应用程序(在 MySql DB 中)。管理员用户应该能够设置 ID 号的格式(#####、##-####、YY-##-#### 等)...仅在创建任何项目之前当然。ID 还必须是 autoinc。当普通用户创建新项目时。

我认为自动增量必须使用 PHP 完成,方法是读取最后一条记录并添加 1。

由于 ID 格式将由用户定义,我认为它可能必须是单个字段(varchar?)。还是应用程序应该创建多个字段以适应用户定义的格式?对此有什么想法吗?

寻找任何想法...

4

1 回答 1

0

读取前一个 id 并仅递增 1 的问题是您冒着重复使用相同 ID 的风险。考虑:

  • 您创建一个新项目,该项目的 ID 来自前一个项目。
  • 您使用并可能分发项目 ID
  • 你决定你根本不想要那个项目,然后删除它
  • 您创建一个新项目。新项目将与旧的已删除项目具有相同的 ID,因为它是通过递增相同的源而派生的。

如果这对您来说不是问题,那么这就是您的解决方案。

否则,你可以试试这个:

  • 在表中创建两列 - 一列用于 ID,一列用于自动递增整数。
  • 创建项目时,不要添加 ID。整数值将自动递增
  • 获取该整数值(可能使用 mysql_insert_id)
  • 使用自动递增整数生成的 ID 更新您的项目

这对系统来说需要付出更多的努力,并且在极高的容量下您可能会遇到竞争条件,但是如果您在项目 ID 上添加唯一索引,则应该会发现任何问题。

于 2012-11-30T07:09:41.107 回答