MySQL - How to temporarily disable a foreign key constraint : MySQL 에서 foreign key Disable 하기

jelly
2 min readFeb 26, 2021

--

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 때문에 고민한다면~ 이 기능으로 쉽게 작업해보좌~~~~:)

--

--

jelly
jelly

Written by jelly

Test Eng? Test Devloper? Devloper?

No responses yet