【问题标题】:how to create a composite key in MySQL database如何在 MySQL 数据库中创建复合键
【发布时间】:2013-02-24 11:17:44
【问题描述】:

我正在使用 mysql server.where 我创建了一个名为 question 的表。此表的列/属性是(课程、主题、年份、问题) 我想创建一个主键(或复合键)由(课程+学科+年份)组成。即对于特定的课程+学科+年份组合,只能有一个问题。(课程+学科+年份)的组合将只有一行,无法创建另一行。 我已经做到了:

primary key(course,subject,year);

但它不起作用。我仍然可以使用相同的课程、主题、年份组合创建两行。

谁能告诉我如何创建复合键属性????

【问题讨论】:

  • MySQL 服务器还是 SQL 服务器? -- stackoverflow.com/questions/5835978/…
  • 当您说不工作时,请明确您的意思。它会抛出任何错误吗?
  • @oliver 以获得更好的分析报告....我仍然可以创建两个具有相同值的(课程+主题+年份)
  • @ChrisCooney...没有..我仍然可以使用相同的课程、主题、年份组合创建两行
  • 发布整个CREATE TABLE 语句,以及您所说的一些示例语句创建了重复的行。

标签: mysql composite-key composite-primary-key


【解决方案1】:

语法是 CONSTRAINT constraint_name PRIMARY KEY(col1,col2,col3) 例如 ::

CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

如果您在创建表时编写上面的示例,例如 ::

CREATE TABLE person (
   P_Id int ,
   ............,
   ............,
   CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
);

要将此约束添加到现有表,您需要遵循以下语法

ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (P_Id,LastName)

【讨论】:

    【解决方案2】:

    如果你看的是mysql,你应该做类似的事情

    ALTER TABLE table_name ADD PRIMARY KEY (a, b, c);
    

    【讨论】:

    • 我已经设置了一个主键,就像你在创建表时在上面写的一样。但它仍然允许 2 行或更多行具有相同的 a、b、c 组合
    • 相同顺序的相同组合?即 a=1, b=2, c=3 超过 1 行?
    • 运行 SHOW INDEXS table_name 和/或 SHOW KEYS 并查看键是否实际设置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 2011-08-15
    • 2019-04-13
    • 1970-01-01
    相关资源
    最近更新 更多