CREATE TABLE hoofdtoonder
(
id INT NOT NULL,
idondersoorten INT FOREIGN KEY REFERENCES `ondersoort`(`id`) NOT NULL,
)
//制作表但错误是在mysql数据库上引用它有人请帮忙
它表示FOREIGN KEY REFERENCES ondersoort(id) NOT NULL
处的错误。但我不知道语法有什么问题。
答案 0 :(得分:2)
这里有几个问题:
foreign key
,只需指定references
。not null
子句应该在references
子句之前。把它们放在一起:
CREATE TABLE hoofdtoonder (
id INT NOT NULL,
idondersoorten INT NOT NULL REFERENCES `ondersoort`(`id`)
);
答案 1 :(得分:0)
MySQL不支持内联外键引用。
确实,SQL语言允许像@Mureinik建议的语法:
idondersoorten INT NOT NULL REFERENCES `ondersoort`(`id`)
但是你会发现MySQL会解析它并忽略它。 InnoDB不支持内联外键语法。如果您现在运行SHOW CREATE TABLE hoofdtoonder
,它会显示:
CREATE TABLE `hoofdtoonder` (
`id` int(11) NOT NULL,
`idondersoorten` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
REFERENCES去了哪里?它被默默地丢弃了。这实际上是我对MySQL的一种优势,它识别一些有效的约束语法,但忽略它。它甚至没有向你显示警告。它只是定义表而没有约束。
在MySQL中,您必须将外键声明为表级约束,如下所示:
CREATE TABLE hoofdtoonder (
id INT NOT NULL,
idondersoorten INT NOT NULL,
FOREIGN KEY (idondersoorten) REFERENCES `ondersoort`(`id`)
);