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