首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL foreign_key_checks是否会影响整个数据库?

MySQL foreign_key_checks是否会影响整个数据库?
EN

Stack Overflow用户
提问于 2011-12-17 02:39:58
回答 6查看 219.4K关注 0票数 208

当我在MySQL中执行此命令时:

SET FOREIGN_KEY_CHECKS=0;

它是影响整个引擎还是只影响我当前的事务?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-12-17 02:46:35

它是基于会话的,就像你在问题中所做的那样。

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

根据这一点,FOREIGN_KEY_CHECKS对于作用域来说是“两者都有”。这意味着可以将其设置为会话:

SET FOREIGN_KEY_CHECKS=0;

或全局:

SET GLOBAL FOREIGN_KEY_CHECKS=0;
票数 259
EN

Stack Overflow用户

发布于 2013-10-24 21:49:34

实际上,有两个foreign_key_checks变量:一个全局变量和一个局部(每个会话)变量。在连接时,会话变量被初始化为全局变量的值。

命令SET foreign_key_checks修改会话变量。

要修改全局变量,请使用SET GLOBAL foreign_key_checksSET @@global.foreign_key_checks

请参考以下手册部分:

http://dev.mysql.com/doc/refman/5.7/en/using-system-variables.html

http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

票数 100
EN

Stack Overflow用户

发布于 2016-03-30 17:22:49

正如Ron所解释的,有两个变量,局部变量和全局变量。始终使用局部变量,并且在连接时与全局变量相同。

SET FOREIGN_KEY_CHECKS=0;
SET GLOBAL FOREIGN_KEY_CHECKS=0;

SHOW Variables WHERE Variable_name='foreign_key_checks'; # always shows local variable

在设置全局变量时,任何现有连接的本地变量都不会更改。您还需要重新连接或设置本地变量。

也许不太直观,当重新启用FOREIGN_KEY_CHECKS时,MYSQL不强制使用外键。这使得即使启用了外键和检查,也可以创建不一致的数据库。

如果您希望您的外键完全一致,则需要在启用检查时添加这些键。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8538636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档