MySQL - How to temporarily disable a foreign key constraint : MySQL 에서 foreign key Disable 하기
MySQL 을 사용하다보면 Table Scheme 를 변경하는 작업중에 foreign key 때문에 고민하게 되는 경우가 있다. 데이타가 없어서 Table 을 Drop 하고 새로 만들어 버리는 경우는 크게 문제가 되지 않지만, 운영중으로 데이터를 유지 해야 하는 경우는 데이터를 Script 로 백업하고 Table 을 Drop 하고 Create 하고 데이터를 Restore 해야하는 번거로운 단계를 거쳐야 한다.
하지만! MySQL 에는 foreign key 를 일시적으로 Diable 해주는 기능을 제공한다.!
이 기능을 이용하면 아래와 같이 foreign key disable -> alter table -> foreign enable 의 3단계로 Table Scheme 를 쉽게 변경 할 수 있다
1. FOREIGN_KEY_CHECKS=0 명령어를 이용해서 foreign key 를 disable 시킨다 .
# foreign key disable mysql> SET FOREIGN_KEY_CHECKS=0;
2. Table Scheme 를 변경한다.
mysql> ALTER TABLE table_name1 .......
3. FOREIGN_KEY_CHECKS=1 명령어를 이용해서 foreign key 를 enable 시킨다.
혹시, 일부 Table 의 foreign key 를 disable/enable 하고 싶다면 아래의 명령어를 사용하면 된다 :)
# table_name 의 foreign key disable(비활성) 하기
mysql> ALTER TABLE table_name DISABLE KEYS;
# table_name 의 foreign key disable(비활성) 하기
mysql> ALTER TABLE table_name ENABLE KEYS;
Table Scheme 변경 작업 중에 foreign key 때문에 고민한다면~ 이 기능으로 쉽게 작업해보좌~~~~:)