gpt4 book ai didi

mysql - 如何添加可为空的列作为表的主组合键的一部分?

转载 作者:行者123 更新时间:2023-11-29 17:36:03 26 4
gpt4 key购买 nike

我们有一个包含生产数据的表格:

CREATE TABLE VerifiedUsers (
Mobile varchar(20) NOT NULL,
Email varchar(255) NOT NULL,
Name varchar(255),
PRIMARY KEY (Mobile,Email)
);

我们有一个新要求,需要在此表中保存用户的唯一设备 ID,以便我们根据(手机、电子邮件、DeviceId)而不是(手机、电子邮件)唯一地识别用户。

这个新列 DeviceId 必须为 Nullable,因为我们无法确保每个客户端都会向我们发送 DeviceId。另一方面,我们必须将其作为主键的一部分,因为我们现在可以拥有具有相同(手机、电子邮件)但不同 DeviceId 的多行。

我们应该如何解决这个问题。我们是否应该通过为 DeviceId 提供一些默认值(以防它为空)来解决这个问题?

最佳答案

我建议:

CREATE TABLE VerifiedUsers (
VerifiedUserId int auto_increment primary key,
Mobile varchar(20) NOT NULL,
Email varchar(255) NOT NULL,
DeviceId varchar(255), -- or whatever
Name varchar(255),
UNIQUE (Mobile, Email, DeviceId)
);

主键的组成部分不能为空。将单个自动增量列作为主键很方便,原因有很多:

  • 对于外键引用很有用。
  • 跟踪插入顺序。
  • 仅使用 4 个字节(如果表非常非常大,则使用 8 个字节)。

关于mysql - 如何添加可为空的列作为表的主组合键的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50279752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com