【问题标题】:SQL Cannot add foreign key?SQL不能添加外键?
【发布时间】:2016-01-05 11:43:07
【问题描述】:

大家好,我是学习 SQL 的新手,试图为学校制作一个简单的电影数据库,但在 SQL 小提琴上出现无法添加外键约束错误,任何想法都非常适合。

CREATE TABLE Actor (
ActorID INT AUTO_INCREMENT PRIMARY KEY,
FName VARCHAR (255),
LName VARCHAR (255)
);

CREATE TABLE Genre (
GenreID INT AUTO_INCREMENT PRIMARY KEY,
GenreType VARCHAR(255)
);


CREATE TABLE Director (
DirectorID INT AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR (255),
LastName VARCHAR (255),
MovieID INT,
FOREIGN KEY (MovieID) REFERENCES Movie(MovieID)

);


CREATE TABLE Movie (
MovieID INT AUTO_INCREMENT PRIMARY KEY,
MovieTittle VARCHAR (255) NOT NULL,
ReleaseYear INT (4) NOT NULL,
Watched BOOlEAN,
StarRating INT (2),
DirectorID INT,
FOREIGN KEY (DirectorID) REFERENCES Director(DirectorID)
);

CREATE TABLE JunctionMovieGenre (
GenreID INT,
MovieID INT,
FOREIGN KEY (GenreID) REFERENCES Genre(GenreID),
FOREIGN KEY (MovieID) REFERENCES Movie(MovieID)
);

CREATE TABLE JunctionMovieActor (
MovieID INT,
ActorID INT,
FOREIGN KEY (ActorID) REFERENCES Actor(ActorID),
FOREIGN KEY (MovieID) REFERENCES Movie(MovieID)
);

【问题讨论】:

  • 请发布您收到的错误信息
  • "无法添加外键约束"

标签: mysql database foreign-keys create-table


【解决方案1】:

您创建表格的顺序错误。只需将表上的电影移到表导演之上。它应该可以工作。

编辑:将两个表相互引用不是一个好主意。您正在做的是一个循环参考设计,这根本不是一个好的设计。但是,如果您真的想要这种设计,您可以创建它们,但它不会很有趣。从这两个表中插入数据和删除数据也是如此。

此链接上的答案: In SQL, is it OK for two tables to refer to each other?

【讨论】:

  • 还是同样的错误,因为 Director 表引用了 Movie 表
  • 我什至不知道为什么要添加它,现在我想起来了。非常感谢您的帮助
猜你喜欢
  • 2019-05-04
  • 1970-01-01
  • 2011-08-11
  • 2015-11-20
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
相关资源
最近更新 更多