这些表有什么问题?

时间:2015-11-10 12:33:57

标签: sql sql-server database

我试图创建这两个表:

CREATE TABLE Game_Reviews(   

PRIMARY KEY(game_review_id, game),
game_review_id int,
game int,
date_posted date,
content varchar(100),
verified_reviewer varchar(20) FOREIGN KEY REFERENCES Verified_Reviewers,
FOREIGN KEY(game) REFERENCES Games
)

CREATE TABLE Game_Review_Comments(

PRIMARY KEY(comment_id, game_review),
comment_id int,
game_review int FOREIGN KEY REFERENCES Game_Reviews,
member varchar(20) FOREIGN KEY REFERENCES Members

)

但我收到的错误是:

  

外键' FK__Game_Revi__game ___ 2022C2A6'的引用列列表中的列数与引用的表格中的主键不匹配' Game_Reviews'。

虽然我不确定,但我觉得这个错误是由于当我在第二个表中引用Game_Reviews时它并不知道要使用哪个主键。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您遇到的问题都在错误信息中:

  

外键引用列列表中的列数   'FK__Game_Revi__game___2022C2A6'与主要版本不匹配   键入引用表'Game_Reviews'。

问题是您的外键与主键不匹配。 这是因为game_reviews中的主键由2个不同的列组成,而您的外键只包含1列。

因此,您必须在Game_Review_Comments中创建一个组合外键,其中包含对game_review_id和游戏的引用。

虽然从我如何理解你的表格结构我认为你真的应该再次检查你是否真的需要一个组合的主键而不只是将game_review_id作为id(我认为没有任何优势可以将两个列作为主键)。

game_review_comments也是如此。在这里,您还有一个组合的主键。因此,您始终需要2列才能将其作为外键引用。而且在这里,我会说你应该重新考虑将它作为1列主键,因为它似乎没有任何优势让我把它变成2列(两个表)。