【问题标题】:Create Unique MYSQL Primary Key Where Only Part Of is Incremntal创建唯一的 MYSQL 主键,其中只有部分是增量的
【发布时间】:2017-11-12 10:21:03
【问题描述】:

在我的一个 mysql 表中,我需要生成长度为 15 位的主键字段。

Structure is 2+2+2+2+2+5 as ex: 010101010100001.

前 10 位值来自五个 2 位表单/输入字段,后 5 个字符是唯一且递增的。因此,无论何时提交表单/数据,该值都会增加。

现在我该如何实现呢?

我想到了以下方法,但想到了 2 个问题:

First use select query to get the last used id/number. Then add +1 to it.**

问题 1:

为此,我必须进行 2 次查询,1 次用于选择,1 次用于更新,但我认为还有比这更好的方法吗?

问题 2:

如果成百上千的多个用户同时提交表单怎么办?如何确保它是唯一的并且不会导致数据库错误?

任何建议/想法都将受到高度赞赏。

【问题讨论】:

  • 您是否被告知它必须是主键,或者您认为主键是保证唯一性的唯一方法?
  • @P.Salmon,是的,先生,它必须是主键。
  • @Zakir_SZH 请编辑您的问题以包含关于您为什么要为您的表创建如此复杂的主键的描述/解释?为什么您希望它成为主键,而不仅仅是具有 UNIQUE 索引的普通列?为什么不使用普通的INT AUTO_INCREMENT PRIMARY KEY 列,这是为表创建主键的常用方法?
  • @Progman,好的,那么先生,即使是唯一的密钥,我如何在没有任何重复密钥/索引的机会的情况下实现这一目标?

标签: php mysql unique primary-key


【解决方案1】:

拥有唯一/主键可确保您在数据库中不能有任何重复的条目。如果您尝试创建重复条目,您将收到来自 MySQL 的错误消息。所以你不需要检查重复项,MySQL 会为你这样做。但是,您必须检查错误消息并通过更改值(例如在其上添加 +1)做出相应反应,具体取决于您的要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-04
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多