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
哪儿参考一去?它被无声地丢弃了。这实际上是我对MySQL的一个牛肉,它承认一些有效的约束语法,但忽略它。它甚至不会向您显示警告。它只是定义了表而没有的约束。
在MySQL中,你必须声明一个外键的表级的约束,像这样:
CREATE TABLE hoofdtoonder (
id INT NOT NULL,
idondersoorten INT NOT NULL,
FOREIGN KEY (idondersoorten) REFERENCES `ondersoort`(`id`)
);
** **什么错误,你得到什么? – ceejayoz
sql错误1064:我说的语法错误 –
'FOREIGN KEY REFERENCES'应该是'NOT NULL'。没有必要在末尾明确指定“NOT NULL”。 –