代码之家  ›  专栏  ›  技术社区  ›  sofs1 Romain Manni-Bucau

为什么我们需要约束关键字来添加外键,而不是在删除外键时?

  •  0
  • sofs1 Romain Manni-Bucau  · 技术社区  · 6 年前

    在添加外键时,这是我使用的

    ALTER TABLE grade ADD CONSTRAINT fk_grade_id FOREIGN KEY (qid) REFERENCES question(qid);
    

    但要放下外键,我用的就是这个

    ALTER TABLE article DROP foreign key fk_grade_id;
    

    为什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Shadow    6 年前

    这是因为您选择这样使用alter table。

    作为MySQL的文档 alter table 也就是说,如果添加外键,则使用constraint子句是可选的:

    添加[约束[符号]] 外键[索引名](索引名…)

    有多个约束类型,而不仅仅是外键,使用约束子句可以应用一致的命名约定。但当您删除外键时,这不是必需的,您只需按其名称引用它。

    而且,不管出于什么原因,mysql忽略了 index_name 在里面 alter table ,但使用 symbol 用于命名索引。