반응형

 

외래키(FOREIGN KEY) 관계 무시하고 삭제하기

 

글. 수알치 오상문

 

테이블에서 특정 데이터를 삭제할 때 외래키 오류로 삭제할 수 없는 경우가 있다. 

외래키 관계를 고려하여 오류가 발생하지 않는 테이블 내용부터 삭제하면 되는데, 

연관된 테이블이 확실한 경우 외래키를 무시하고 해당 테이블의 내용들을 삭제할 수도 있다.

 

외래키를 무시하도록 하는 쿼리는 다음과 같다. 기본이 1이므로 작업 후에 다시 활성화 하자.

SET foreign_key_checks = 0;

 

반대로 외래키 관계가 있을 때 삭제하지 못하도록 하려면 0을 1로 변경하여 설정한다.

SET foreign_key_checks = 1;

 

다음은 파이썬 SQLAlchemy를 이용하여 해당 쿼리를 날리는 예제이다. 

데이터베이스마다 해당 쿼리는 다를 수 있으며, 예제에 나오는 쿼리는 

MySQL, MariaDB에서 사용할 수 있다.

 

# SQLAlchemy 연결
conn = engine.connect()

# 외래 키 체크 비활성화
conn.execute(text("SET foreign_key_checks = 0;"))

# 여기에 다른 SQL 쿼리 수행
# ...

# ...


# 외래 키 체크 다시 활성화
conn.execute(text("SET foreign_key_checks = 1;"))

# SQLAlchemy 연결 종료
conn.close()

 

반응형

+ Recent posts