MysqL要求在外键和引用键上建立索引,以便外键检查可以快速进行,而无需进行表扫描。
尽管这是MysqL文档,但可能与在您的MariaDB版本上失败相同。
您可以通过简单地向表中的Start_Time
列添加索引来解决此问题Showings
。
但是,在执行此操作之前,请考虑您到底想使用此外键做什么。创建表时,您引用Start_Time
的是Showings
表中的ANY ,而不是任何特定的显示。
根据您的表设计,您Showings
很可能想要实现对表主键的外键。
CREATE TABLE Reservation (
Movie_Title varchar(255) NOT NULL,
Theatre_No int NOT NULL,
Complex_Name varchar(255) NOT NULL,
Start_Time datetime NOT NULL,
CustomerID int NOT NULL,
Number_of_Tickets int NOT NULL,
PRIMARY KEY (Movie_Title, Theatre_No, Complex_Name, Start_Time, CustomerID),
FOREIGN KEY (Movie_Title) REFERENCES Showings(Movie_Title),
FOREIGN KEY (Theatre_No) REFERENCES Showings(Theatre_No),
FOREIGN KEY (Complex_Name) REFERENCES Showings(Complex_Name),
FOREIGN KEY `Showing` (Movie_Title, Theatre_No, Complex_Name, Start_Time) REFERENCES Showings(Movie_Title, Theatre_No, Complex_Name, Start_Time),
FOREIGN KEY (CustomerID) REFERENCES Customer(Account_Number)
);