[英]SQL foreign key order of execution constraints
在MySQL語句中創建主/外鍵鏈接時,執行順序重要嗎?
例如,以下代碼將產生錯誤:“無法添加外鍵約束”
CREATE TABLE IF NOT EXISTS Movies
(
MovieID INT NOT NULL AUTO_INCREMENT,
GenreID INT NOT NULL,
PRIMARY KEY(MovieID),
FOREIGN KEY(GenreID) References Genres(GenreID)
);
CREATE TABLE IF NOT EXISTS Genres
(
GenreID INT NOT NULL AUTO_INCREMENT,
GenreName VARCHAR(30),
Primary key (GenreID)
);
Cannot add foreign key constraint
但是,當首先創建流派表時,該錯誤不再存在:
CREATE TABLE IF NOT EXISTS Genres
(
GenreID INT NOT NULL AUTO_INCREMENT,
GenreName VARCHAR(30),
Primary key (GenreID)
);
CREATE TABLE Movies
(
MovieID INT NOT NULL AUTO_INCREMENT,
GenreID INT NOT NULL,
PRIMARY KEY(MovieID),
FOREIGN KEY(GenreID) References Genres(GenreID)
);
Schema Ready
是因為尚未創建表而導致錯誤,所以它不知道流派表PK類型在哪里/是什么?
當我尋找外鍵約束的解決方案時,我發現的只是有關數據類型匹配的信息,而不是執行順序。 謝謝。
是因為尚未創建表而導致錯誤,所以它不知道流派表PK類型在哪里/是什么?
Yes.
如果首先定義Movies
表,MySQL將嘗試查找所引用的Genres
表,該表尚不存在。 因此,您應該以相反的順序創建它們:
CREATE TABLE IF NOT EXISTS Genres
CREATE TABLE IF NOT EXISTS Movies
外鍵是對另一個鍵的引用:主鍵。 如果主鍵現在不存在,則無法引用未知事物,因此會出現異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.