2013-10-16 5 views
0

테이블에서 외래 키 제약 조건을 제거하려고합니다. 그러나 제약 조건을 삭제할 때마다 색인이 나중에 생성 된 것처럼 보일 것입니다.제약 조건을 삭제할 때 인덱스가 자동으로 생성됩니다.

configtool_access_control 제약 :

CONSTRAINT FK_configtool_access_control_configtool_app_site_app_site_id FOREIGN KEY (app_site_id) 
    REFERENCES configtool_app_site (app_site_id) ON DELETE RESTRICT ON UPDATE RESTRICT 

드롭 문 :

use my_db; 

set AUTOCOMMIT=1; 

SET FOREIGN_KEY_CHECKS = 0; 
flush privileges; 

alter table configtool_access_control 
    drop FOREIGN KEY FK_configtool_access_control_configtool_app_site_app_site_id; 

결과 인덱스가 테이블 configtool_access_control에서 생성됩니다

INDEX FK_configtool_access_control_configtool_app_site_app_site_id (app_site_id) 

은 그 뜻 내가 스크립트를 제거해야한다는 인덱스의 동시에? 같은 시간에 둘 다 떨어 뜨릴 수있는 방법이 있습니까?

답변

0

FOREIGN KEY을 만들 때 DBMS도 해당 키를 생성합니다. 짧게 말하면 'foreign key' = 'usual key' + 'foreign constraint'입니다. 따라서 제약 조건 만 떨어 뜨리면 키가 계속 유지됩니다. 실제로 그렇게해야하는 경우 키를 삭제해야합니다.

더 잘 이해하려면 외래 키를 만든 후 테이블에 SHOW INDEXES 구문을 실행하십시오. 그런 다음 해당 '평소'키가 있다는 것을 알게됩니다.

+0

@ alma-do-mudo 이렇게 외래 키가 하나씩 떨어지면 인덱스 감소가 필요합니까? – TekiusFanatikus

관련 문제