2016-12-05 18 views
1

我有一个表neighboorhoods和表neighboorhood_id字段的表学校。重命名另一个表中的外键表

当我看到拼写错误时,我想将名称更改为正确的形式。

首先,我使用phpStorm的名称重构工具,并将模型更改为Neighborhood,然后添加了$ table ='neighboorhood'。

然后我做了一个迁移来重命名表,删除了$ table属性,并且一切正常。

我认为这将是因为外键约束创建这样抛出一个错误:

$table->foreign('neighboorhood_id')->references('id')->on('neighboorhoods')->onDelete('cascade'); 

而现在它的工作原理,而无需将其更新为:

$table->foreign('neighborhood_id')->references('id')->on('neighborhoods')->onDelete('cascade'); 

为什么没我不得不修改约束吗?我检查了数据库中的约束条件,现在它指向邻居表而不是邻居表。

回答

1

我也有这样的情况。显然,InnoDB并没有使用表名作为对约束的引用:它使用了一些内部标识(不确定其他数据库类型)。

把它想象成一个ID,当表格的name改变时它保持不变。

但是,docs说不同的东西,所以放弃和创建一个新的外键肯定是一件好事。

指向重命名表的外键不会自动更新。在这种情况下,您必须删除并重新创建外键才能正常工作。

相关问题