2011-03-17 7 views
0

레거시 데이터베이스를 MySQL로 마이그레이션하고 연결을 적절히 생성하는 작업이 주어졌습니다. 그래서, 내가 한 것은 SET foreign_key_checks = 0;을 설정하여 모든 데이터를 데이터베이스로 임포트하는 것입니다.MySQL : 레거시 데이터베이스 제약 문제

그러나 지금은 많은 외래 키 제약 조건이있는 것으로 보이므로 문제가 있습니다.

데이터베이스를 사용하는 응용 프로그램은 제한 문제에 대해서만 불만을 제기하지만 위치는 불만입니다. 그래서, 나는이 문제를 찾는 방법에 대해 궁금합니다. MySQL 자체 검사가 있습니까? 또는 이러한 문제를 찾는 다른 도움을 주시면 감사하겠습니다.

감사합니다.

답변

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'가 테이블 a에 없으므로 테이블 b에 외래 키를 추가하려고하면 실패합니다. 이 쿼리는 a에없는 b의 모든 ID를 반환합니다.

select b.id 
from b 
left join a on (a.id = b.id) 
where a.id is null