MySQL:遗留数据库约束问题

时间:2011-03-17 12:49:19

标签: mysql

我被赋予了将遗留数据库迁移到MySQL并正确创建关联的任务。因此,我所做的是通过设置SET foreign_key_checks = 0;将所有数据导入数据库。

然而,现在我遇到了问题,因为看起来存在许多外键约束问题。

使用数据库的应用程序只会抱怨约束问题而不是抱怨。所以,我想知道如何找到这些问题。是否有MySQL附带的自检?或任何其他帮助发现这些问题,我们表示赞赏。

谢谢!

1 个答案:

答案 0 :(得分:0)

您只需要询问dbms引用表中哪些键列的值不在引用表中。

create table a (
id integer primary key
);

create table b (
id integer primary key
);

insert into a values (1);
insert into a values (2);
insert into a values (3);

insert into b values (1);
insert into b values (2);
insert into b values (7);

想象一下,应该有一个从b到a的外键。尝试向表b添加外键应该会失败,因为'7'不在表a中。此查询将返回b中不在。

中的所有ID
select b.id
from b
left join a on (a.id = b.id)
where a.id is null