簡體   English   中英

添加外鍵約束時的語法錯誤

[英]Syntax error when adding foreign key constraint

我試圖為type_id列設置DEFAULT值和NOT NULL ,這是instance表的外鍵,但是它抱怨MySQL語法。

CREATE TABLE `type` (
  `id` int(10) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `city` varchar(256)
); 

ALTER TABLE instance ADD COLUMN type_id int(10) unsigned NOT NULL;

ALTER TABLE instance ADD CONSTRAINT instance_xbf1 DEFAULT 1
FOREIGN KEY (type_id)
REFERENCES type(id) int(10) unsigned NOT NULL;

它抱怨最后一條語句的語法:

錯誤:\\“您的SQL語法有錯誤;請檢查與您的MySQL服務器版本相對應的手冊以獲取正確的語法,以在'DEFAULT 1 \\ nFOREIGN KEY(type_id)\\ nREFERENCES type(id)int(10)unsi附近使用'位於第1行\\“)”,“ stdout”:“”,“ stdout_lines”:[],“警告”:[]}

您正在嘗試在ADD CONSTRAINT語句中為外鍵做太多事情。

您可以通過兩種方式添加默認值。 作為列定義的一部分:

ALTER TABLE instance ADD COLUMN type_id int(10) unsigned NOT NULL DEFAULT 1;

或稍后在它自己的語句中:

ALTER TABLE instance ALTER type_id SET DEFAULT 1;

在外鍵中,您無法定義列的屬性,例如數據類型,可為空性,默認值等。

錯誤消息告訴您,它不希望DEFAULT關鍵字作為ADD CONSTRAINT一部分。 如果刪除它,它將抱怨數據類型和可空性部分: int(10) unsigned NOT NULL因為它也不希望這些。 但是您已經定義了它們。

因此,您的ADD CONSTRAINT可以簡化為:

ALTER TABLE instance ADD CONSTRAINT instance_xbf1
FOREIGN KEY (type_id) REFERENCES type(id);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM