一列上有两个外键

时间:2015-07-27 09:10:20

标签: mysql laravel foreign-key-relationship

我在MySQL中有两个表,名为manualslibrary。两者都可以上传文件,所以我创建了第三个表,名为files。在文件中,我有一个列parent_id。我可以从手册和库中将parent_id作为外键吗?

我正在使用Laravel(4.2)并试过这个,但它不起作用:

$table->integer('parent_id')->unsigned();
$table->foreign('parent_id')->references('id')->on('library');
$table->foreign('parent_id')->references('id')->on('manuals');

1 个答案:

答案 0 :(得分:2)

没有。您不能在同一列上有多个外键。来自MySQL文档:

  

MySQL支持表中一列与另一列之间的外键引用。 (列不能有自己的外键引用。)在这些情况下,“子表记录”实际上是指同一个表中的依赖记录。

原因是MySQL无法区分父母。 Laravel(或任何其他框架)不提供解决此问题的方法。

此问题之前以略有不同的形式提出过。示例:it is possible to reference one column as multiple foreign keys