检查参照完整性中断

时间:2010-09-16 14:55:02

标签: mysql referential-integrity

在我的过程中,我做了类似的事情:

SET FOREIGN_KEY_CHECKS = 0;
LOAD DATA INFILE '/path/to/mytable.txt' INTO TABLE mytable;
SET FOREIGN_KEY_CHECKS = 1;

现在,我需要检查导入后的数据是否违反参照完整性。我想做点什么

check database all foreign_keys;

是否存在类似的命令?如果没有,怎么做这个控制?

环境:使用InnoDB的MySQL v5.1.xx

由于

2 个答案:

答案 0 :(得分:3)

答案

Here是一些可以满足您需求的代码。看起来没有这样的命令。

历史

好的,我不是MySQL专家,但除非你禁用它,否则会不断管理参照完整性。除非先删除或禁用约束,否则不能在违反约束的表中插入行。没有必要“检查”它们。

如果你“禁用”它们,那么启用它们将强行检查。

事实上,这确实是完全错误的,而且非常可怕。 at least in 5.1

我认为如果他们有这个功能,他们会在你重新启用约束时调用它,所以我怀疑你会在服务器中找到它。

答案 1 :(得分:1)

上述链接已经死了,可悲。

本博文中提到的脚本可以很好地显示未被引用的FK(虽然它也会在FK可为空时显示它们,因此可能合法地为null,因此并不总是有用!):

http://www.mysqlperformanceblog.com/2011/11/18/eventual-consistency-in-mysql/