[英]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.