【问题标题】:Table primary unique index as two columns?表主唯一索引作为两列?
【发布时间】:2014-07-16 03:32:34
【问题描述】:

如何将表中的主键定义为两个唯一字段?

我的表中有几列,我有两个键:IDSOURCEID 的值可以在列中出现两次,但 ID + SOURCE 的组合可以作为主键。

例如:

              ID | SOURCE | TEXT
              ------------------
UNIQUE -      2312 | FB | BLA BLA  
UNIQUE -      2312 | MU | BLA BLA 

我正在使用 MySQL 数据库。如何在两列上设置主键?

【问题讨论】:

标签: mysql indexing


【解决方案1】:

您可以使用ALTER TABLE 语法,如下所示:

ALTER TABLE my_table ADD CONSTRAINT my_table_pk PRIMARY KEY (id, source);

此外,这可以在CREATE TABLE 中定义,如下所示:

CREATE TABLE my_table
(
  id int,
  source varchar(3),
  text varchar(20),
  PRIMARY_KEY(id, source)
)

【讨论】:

  • 感谢您的详细解答。我选择 Aman 的问题是因为尽管您的回答更详细,但他的分数较少。
  • @Yehonatan 感谢您在社区建设方面所做的努力。你的评论让我想起了几年前的类似情况,当时我的声望点很低,用户给出了相同的理由接受我的回答而不是高声望用户:)
  • @Thanks :) 我正在尽我所能提供帮助
【解决方案2】:

添加一个约束以强制在两列上强制执行唯一性:

Alter table table_name add CONSTRAINT constr_ID unique (ID,SOURCE);

或添加对两列强制执行的约束主键:

 Alter table table_name add  PRIMARY KEY (id, source);

【讨论】:

  • CONSTRAINT 在做什么?
猜你喜欢
  • 2012-08-21
  • 2016-04-14
  • 2016-03-22
  • 1970-01-01
  • 2019-11-12
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 2020-06-28
相关资源
最近更新 更多