Laravel中的Schema :: disableForeignKeyConstraints如何用于MySQL?

问题描述

在执行需要禁用外键约束的操作时,可以暂时禁用外键约束以执行此类操作,例如:

Schema::disableForeignKeyConstraints();
// Do good stuff
Schema::enableForeignKeyConstraints();

这让我想想是否在架构中为所有连接禁用了约束?

一个过程中的另一个连接是否有可能打破禁用和启用之间的限制?

我试图通过在Tinker中运行Schema::disableForeignKeyConstraints();并打开一个新的终端来尝试打破一些外键约束来对此进行测试-但它们仍然适用,我不确定为什么。

模式构建器使用

public function disableForeignKeyConstraints()
{
    return $this->connection->statement(
        $this->grammar->compiledisableForeignKeyConstraints()
    );
}

对于MysqLcompiledisableForeignKeyConstraints函数定义为

public function compiledisableForeignKeyConstraints()
{
    return 'SET FOREIGN_KEY_CHECKS=0;';
}

因此,似乎运行Schema::disableForeignKeyConstraints();应该只是禁用整个模式的外键约束-但它似乎仅在每个连接的基础上起作用。

这是Laravel还是MysqL?如何运作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)