对MySQL表的双重引用

时间:2018-03-23 14:18:52

标签: mysql

我尝试添加与birth_country_id表格相关的两列home_country_idcountries的引用。

当我执行以下查询时,它会给出错误#1215 - Cannot add foreign key constraint

ALTER TABLE `users` 
    ADD CONSTRAINT `users_country_ids_foreign` 
    FOREIGN KEY 
        (`home_country_id`, `birth_country_id`) 
    REFERENCES `countries`(`id`, `id`) 
        ON DELETE SET NULL ON UPDATE NO ACTION;

PS:此查询由PhpMyAdmin自动生成。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您需要生成两个单独的外键。您想要单独检查您在home_country_id中指定的国家/地区是否存在,以及您在birth_country_id中指定的国家/地区是否存在。

MySQL不支持在索引中多次使用同一列(这是您的语句失败的技术原因),但如果允许,则您的外键将验证{ {1}}和home_country_id相等,这可能不是您想要表达的内容。

答案 1 :(得分:-1)

在这种情况下,您可以尝试为每列添加2个单独的约束。