我试图学习外键约束的概念,并使用这些类型的约束阅读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
。他们为什么得到自己的名字,而不是我应该说的名字呢?
答案 0 :(得分:1)
使用CONSTRAINT
关键字指定FK约束,如
CONSTRAINT `blog_ibfk_1` FOREIGN KEY (`blog`)
REFERENCES `blog` (`id`)
ON UPDATE CASCADE
ON DELETE RESTRICT