mysql唯一标识列_使用多个列作为mysql的唯一标识符

是的,MySQL提供了这样做的能力。

ALTER TABLE MyTable

ADD UNIQUE KEY `my_unique_key` (`group_id`, `user_id`)

我不知道你在使用这个表,但它听起来像这个唯一的键可能是一个强大的候选人的主键的表。主键也是自动的唯一键。如果您决定将其设置为主键,请执行以下操作:

ALTER TABLE MyTable

ADD PRIMARY KEY (`group_id`, `user_id`)

(如果您收到一条错误消息,说明已经有主键,那么请执行ALTER TABLE MyTable DROP PRIMARY KEY,然后重复上述命令。)

编辑:响应用户评论

对于唯一键所覆盖的列,不能有多行具有相同的非NULL值。因此,例如,您不能有两行,其中group_id = 0和user_id = 5。 0是一个值。但是,如果使一个或两个列为空,则可以有多个与NULL的位置相同的行。因此,您可以有两个(或更多)行,其中group_id为NULL AND user_id = 1234。

条款:以上是常见的MySQL存储引擎(MyISAM和InnoDB)。 MySQL有存储引擎,其中NULL被视为一个唯一的值,但你可能不使用它们。

如果使一个或两个列为可空,那么唯一键不能是主键 – 主键必须在非空的列上。

让我们假设你把这个键作为主键,现在你想在group_id列中允许NULL。我不知道当前是什么数据类型group_id;我将假设它目前INT UNSIGNED NOT NULL,但你必须修改以下如果不是这个。您将无法再使用此键作为主键。这是一个命令,你可以运行,以进行所需的更改:

ALTER TABLE MyTable

DROP PRIMARY KEY,

MODIFY group_id INT UNSIGNED,

ADD UNIQUE KEY `my_unique_key_with_nulls` (`group_id`, `user`)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值