我正在创建一个需要存储项目ID(在MySql DB中)的应用。管理员用户应该能够在创建任何项目之前设置ID号的格式(#####,##-####,YY-##-####等)...当然。该ID也必须自动递增。普通用户创建新项目时。
我认为自动增量将必须通过PHP完成,方法是读取最后一条记录并添加1。
由于ID格式将由用户定义,因此我认为它可能必须是单个字段(varchar?)。还是该应用程序应创建多个字段以适应用户定义的格式?有什么想法吗?
寻找任何想法...
最佳答案
读取前一个ID并仅增加一个ID的问题是,您可能会重复使用同一ID。考虑:
您创建一个新项目,该项目使用其上一个项目的ID。
您使用并可能分配项目ID
您决定根本不想要该项目,然后将其删除
您创建一个新项目。新项目将具有与已删除的旧ID相同的ID,因为它是通过增加相同的源代码而派生的。
如果这不是您的问题,那就是您的解决方案。
否则,您可以尝试以下操作:
在表中创建两列-一列用于ID,一列用于自动递增的整数。
创建项目时,请勿添加ID。整数值将自动递增
获取该整数值(可能使用mysql_insert_id)
使用从自动递增的整数生成的ID更新项目
这将使系统付出更多的努力,并且在极高的数量下,您可能会遇到竞争状况,但是如果在项目ID上添加唯一索引,则应该会遇到任何问题。