php - 具有自动递增功能的用户可格式化 ID

标签 php mysql

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

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

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

寻找任何想法...

最佳答案

读取之前的 ID 并仅递增 1 的问题在于您可能会重复使用相同的 ID。考虑:

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

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

否则,你可以试试这个:

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

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

关于php - 具有自动递增功能的用户可格式化 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13640300/

相关文章:

PHP 邮件添加 CC

php - 通过 Regex 查找带有第二个参数的所有函数

php - MySQL 正在跳过第一个结果

java - 使用java在mysql中创建用户

mysql - 删除mysql中重复数据(大数据场景下)

java - 如何将 byte[] 转换为日期

PHP foreach 表列

php - 用于评分html5 js的圆形div栏

php - 如何全局设置 Symfony 表单的日期格式?

php - 使用 PHP 和 SQL 生成统计信息