MySQL foreign_key_checks = 0导致外键被错误命名

时间:2017-08-08 21:06:14

标签: mysql

在MySQL中使用外键时有奇怪的怪癖。

如果您SET foreign_key_checks = 0;,则在使用文档的relevant section中所述的symbolindex_name时,外键约束将被错误命名。将使用index_name代替symbol

此示例说明了预期的行为:

CREATE TABLE foo (barId varchar(16));
CREATE TABLE bar (id varchar(16) UNIQUE NOT NULL);
ALTER TABLE foo
  ADD CONSTRAINT foobar FOREIGN KEY wrong (barId) REFERENCES bar(id);

foo现在与bar上的表id具有外键关系,名称为foobar。但是,如果这些语句前面有SET foreign_key_checks=0,则生成的外键约束将被命名为wrong

docs on foreign_key_checks似乎并不意味着这种行为。有谁知道这里会发生什么?

MySQL版本:5.7.17

0 个答案:

没有答案