티스토리 뷰

전에 게시한 PostgreSQL에 이어 Mariadb도 외래키 다루는데 유용한 구문이다.

외래키 제약을 없애고, 인덱스만 생성할 때 참조하면 유용하다.

외래키 조회

SELECT 
    TABLE_NAME, 
    CONSTRAINT_NAME 
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE 
    TABLE_SCHEMA = 'cheonil' 
    AND REFERENCED_TABLE_NAME IS NOT NULL;

외래키 삭제 구문 생성

SELECT 
    CONCAT('ALTER TABLE ', TABLE_NAME, ' DROP FOREIGN KEY ', CONSTRAINT_NAME, ';') AS drop_query
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE 
    TABLE_SCHEMA = 'cheonil'
    AND REFERENCED_TABLE_NAME IS NOT NULL;

외래키 인덱스 생성 구문

SELECT 
    CONCAT('CREATE INDEX idx_', COLUMN_NAME, ' ON ', TABLE_NAME, '(', COLUMN_NAME, ');') AS create_index_query
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE 
    TABLE_SCHEMA = 'cheonil'
    AND REFERENCED_TABLE_NAME IS NOT NULL;

 

댓글