嘿,伙计们,我是新来的学习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)
);

最佳答案

您创建表的顺序错误。把桌子上的电影移到桌子上。它应该有用。
编辑:把两张桌子互相参照是不好的。你所做的是一个循环参考设计,这根本不是一个好的设计。然而,如果你真的想要这个设计,你可以创造他们,但它不会是有趣的。在这两个表中插入数据和删除数据也是如此。
此链接上的答案:
In SQL, is it OK for two tables to refer to each other?

关于mysql - SQL无法添加外键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33005839/

10-11 02:54