2014-11-20 3 views
0

내 데이터베이스의 다른 많은 테이블에서 참조하는 테이블을 삭제하려고합니다. 아래의 쿼리를 사용하여 삭제할 상위 테이블을 참조하는 320 개의 테이블을 찾았습니다.MySQL - 많은 테이블의 외래 키 삭제

SELECT 
    ke.referenced_table_name parent, 
    ke.table_name child, 
    ke.constraint_name 
FROM 
    information_schema.KEY_COLUMN_USAGE ke 
WHERE 
    ke.referenced_table_name = 'MasterData'; 

이러한 테이블에 FOREIGN KEY 제약을 삭제하고 싶습니다. 하나 하나,이 같이 갈 것 :

ALTER TABLE a 
DROP FOREIGN KEY a_md_fk; 

이 두 쿼리를 결합 할 수있는 방법은, 거기에 내가 대신 320 개 개별 문장, 한 번에 모든 FOREIGN KEY의 드롭 있다고?

답변

1

사용이 쿼리 :

SELECT CONCAT('ALTER TABLE ', ke.table_name, ' DROP FOREIGN KEY ', ke.constraint_name, ';') 
FROM 
    information_schema.KEY_COLUMN_USAGE ke 
WHERE 
    ke.referenced_table_name = 'MasterData'; 

는 당신이 필요로하는 외부 키를 삭제하는 데 필요한 SQL 쿼리를 생성. 선호하는 방법으로 파일을 실행 한 다음 파일에 저장 한 다음 mysql 명령 줄 클라이언트에 연결하거나 그래픽 MySQL 클라이언트를 사용하는 경우 복사 & 붙여 넣기 만 사용하십시오.