在MySQL中使用外键时有奇怪的怪癖。
如果您SET foreign_key_checks = 0;
,则在使用文档的relevant section中所述的symbol
和index_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