约束名称被忽略

时间:2016-12-16 11:38:00

标签: mysql constraints

我试图学习外键约束的概念,并使用这些类型的约束阅读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_referenceuser_ibfk_1而不是user_reference。他们为什么得到自己的名字,而不是我应该说的名字呢?

1 个答案:

答案 0 :(得分:1)

使用CONSTRAINT关键字指定FK约束,如

 CONSTRAINT `blog_ibfk_1`  FOREIGN KEY (`blog`)
        REFERENCES `blog` (`id`)
            ON UPDATE CASCADE
            ON DELETE RESTRICT