Hey guys i am new to learning SQL, trying to make a simple movie database for school but getting cannot add foreign key constraint error on SQL fiddle any ideas would be very much appropriated thanks.
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)
);
Your order of creating tables is wrong. Just move up table Movie above table Director. It should work.
Edit: It is not a good idea to refer two tables to each other. What you are doing is a circular reference design which is not a good design at all. However, if you really want this design, you can create them but it is not going to be fun. The same goes for inserting data and deleting data from those two tables.
Answers on this link:
In SQL, is it OK for two tables to refer to each other?