1
我试图学习外键约束的概念,并阅读了manual about使用这些类型的约束。我对这些限制非常了解,并且按照预期工作。然而,手册说创建约束的语法是FOREIGN KEY [index_name] (index_col_name, ...)
,但是当我运行以下查询时,外键约束得到一个完全不同的名称;约束名称被忽略
CREATE TABLE blog_user (
`blog` INTEGER NOT NULL,
`user` INTEGER NOT NULL,
UNIQUE `blog_user` (`blog`, `user`),
FOREIGN KEY `blog_reference` (`blog`)
REFERENCES `blog` (`id`)
ON UPDATE CASCADE
ON DELETE RESTRICT,
FOREIGN KEY `user_reference` (`user`)
REFERENCES `user` (`id`)
ON UPDATE CASCADE
ON DELETE CASCADE
) ENGINE = InnoDB;
约束名称导致blog_ibfk_1
,而不是blog_reference
和user_ibfk_1
而不是user_reference
。为什么他们得到自己的名字,而不是我说的那个?
的FK约束谢谢你,原来我不明白手册。我认为约束名称是由'index_name'确定的,但实际上它是'符号'。添加'CONSTRAINT constraint_name'部分正确命名它们! – Daniel