SQL 无法添加外键?
SQL Cannot add foreign key?
大家好,我是新手 SQL,正在尝试为学校制作一个简单的电影数据库,但无法在 SQL fiddle 上添加外键约束错误任何想法都是非常感谢。
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)
);
您创建 table 的顺序有误。只需将 table 电影上移到 table 导演上方。应该可以。
编辑:将两个 table 相互引用并不是一个好主意。你正在做的是一个循环参考设计,这根本不是一个好的设计。然而,如果你真的想要这个设计,你可以创建它们,但这不会很有趣。从这两个 table 中插入数据和删除数据也是如此。
关于这个 link 的回答:
In SQL, is it OK for two tables to refer to each other?
大家好,我是新手 SQL,正在尝试为学校制作一个简单的电影数据库,但无法在 SQL fiddle 上添加外键约束错误任何想法都是非常感谢。
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)
);
您创建 table 的顺序有误。只需将 table 电影上移到 table 导演上方。应该可以。
编辑:将两个 table 相互引用并不是一个好主意。你正在做的是一个循环参考设计,这根本不是一个好的设计。然而,如果你真的想要这个设计,你可以创建它们,但这不会很有趣。从这两个 table 中插入数据和删除数据也是如此。
关于这个 link 的回答:
In SQL, is it OK for two tables to refer to each other?