我正在努力学习外键约束的概念,并阅读了 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
。为什么他们有自己的名字,而不是我告诉它应该的名字?
最佳答案
比起使用 CONSTRAINT
关键字来指定 FK 约束,例如
CONSTRAINT `blog_ibfk_1` FOREIGN KEY (`blog`)
REFERENCES `blog` (`id`)
ON UPDATE CASCADE
ON DELETE RESTRICT
关于mysql - 约束名称被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41183554/