【问题标题】:Making a primary key not "auto-increment" in MySQL?在 MySQL 中制作主键不是“自动增量”?
【发布时间】:2020-02-20 21:06:10
【问题描述】:

是否可以使主键(将用作外键)不具有自动增量。想象一个演员从不同的来源输入他/她的 id。我想把这个随机的 int 值存储为主要的

【问题讨论】:

  • 它必须是唯一的,所以可能性是有限的,你也可以使用自己的编程来创建一个唯一的密钥,但为什么要麻烦。 random 不是随机的,你总是会得到相同的数字,它是数学,你只能降低概率。
  • 如果我理解的话,您希望 用户 输入主键吗?显然,您必须检查它是否不会重复。
  • 当你说“演员”时,你的意思是“用户”吗?
  • 是的,我指的是用户。
  • @nbk 我不认为提问者的意思是“随机”,我认为他们的意思是“任意”。

标签: mysql sql database datatables primary-key


【解决方案1】:

是的。

您实际上必须指定AUTO INCREMENT 或数据类型SERIAL 才能自动递增值。如果此FOREIGN KEY 将引用的PRIMARY KEY 是数据类型SERIAL,那么您需要将FOREIGN KEY 的数据类型设置为BIGINT UNSIGNEDSERIAL 实际上是将列设置为BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE 的别名。将FOREIGN KEY 设置为BIGINT UNSIGNED 将使其具有与序列相同的整数范围。

请记住,PRIMARY KEY 必须是唯一的。因此,如果此表意味着有多个记录将引用另一个表中的单个记录,那么您最好创建一个 PRIMARY KEY 类型为 SERIAL ,然后有另一列是您的 FOREIGN KEY 即输入BIGINT UNSIGNED。这将允许您在 FOREIGN KEY 列中拥有多个具有相同值的记录,但您仍将拥有有效的 PRIMARY KEY

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多