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

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

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

寻找任何想法...

最佳答案

读取前一个ID并仅增加一个ID的问题是,您可能会重复使用同一ID。考虑:


您创建一个新项目,该项目使用其上一个项目的ID。
您使用并可能分配项目ID
您决定根本不想要该项目,然后将其删除
您创建一个新项目。新项目将具有与已删除的旧ID相同的ID,因为它是通过增加相同的源代码而派生的。


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

否则,您可以尝试以下操作:


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


这将使系统付​​出更多的努力,并且在极高的数量下,您可能会遇到竞争状况,但是如果在项目ID上添加唯一索引,则应该会遇到任何问题。

10-02 14:03
查看更多