【问题标题】:Can I create a composite key for a third table from the primary keys of 2 different tables? Does MySQL support it?我可以从 2 个不同表的主键中为第三个表创建复合键吗? MySQL 支持吗?
【发布时间】:2021-03-14 18:12:53
【问题描述】:

我有 3 个不同的表:

review table-> 这有 mov_id 作为主键。 users_table -> 这有用户名作为主键。 review_table -> 我可以用 movie_id 和 username 为这个表创建一个复合主键吗?

users table

reviews table

comments table

我无法连接这 3 个表,我不知道为什么。

This is the error I'm getting while creating the comments table

【问题讨论】:

  • 当然可以。如果您在尝试这样做时遇到任何错误,请提供。
  • @Nino 感谢您的回复。嗯,这是我在 PHPMyadmin 中遇到的错误... #1005 - 无法创建表 movies.comments (errno: 150 "外键约束格式不正确")
  • @Nino 我正在尝试在电影表和 cmets 表之间创建外键连接
  • 您是如何编写查询的?该错误似乎表明您的外键约束声明中有错误的语法。如果你想要一个如何做的例子,请查看我的答案。

标签: php mysql phpmyadmin


【解决方案1】:

您可以使用外键(来自其他表的主键)创建复合主键,您无需做任何特别的事情。只需约束外键并将它们声明为主键即可。

使用您提供的表和列的名称,这是一个用于创建您想要的表的查询:

CREATE TABLE review_table (
  movie_id INT,
  username VARCHAR(255),
  -- Change INT and VARCHAR(255) by what you used on the others tables
  PRIMARY KEY (movie_id, username),
  FOREIGN KEY (movie_id) REFERENCES movies_table(movie_id),
  FOREIGN KEY (username) REFERENCES users_table(username)
)

【讨论】:

  • #1005 - Can't create table movies.comments (errno: 150 "Foreign key constraint is wrongly forms") (详情...) 这是我在执行时遇到的错误这个查询
  • 我的数据库名称是movies,表是review(这不过是movies表)、users、cmets
  • 尝试使用正确的表和列名称调整该示例
  • 我刚刚删除了我的表并尝试通过此查询再次创建它,但它不起作用
  • 对不起,我不明白我做错了什么。我已经检查了两次列。
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 2015-12-08
相关资源
最近更新 更多