본문 바로가기
개발

[Maria DB] 외래키가 존재하는 테이블 삭제

by angeloper 2023. 6. 27.
반응형

이번에 Maria Database를 사용하면서, 제가 데이터를 삭제하려고 SQL(Structure Query Language)를 사용하면서 다음과 같은 에러구문을 마주치게 되었습니다.

 

테이블의 내용 모두 삭제해 줘~!!!

delete from <테이블명>;

이때, 다음과 같은 에러 구문을 마주치게 되었습니다.

더보기

ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

 

확인해 보니 다음과 같은 내용이었습니다. "너.... 삭제하려는 행에 대해서 다른 테이블이 너를 가리키고 있어.(이 부분을 저는 "데이터 칼럼을 참조하고 있다"라고 합니다.) 그래서 지우려면 다른 테이블을 먼저 삭제한 다음에 해야 돼. 아님 못 지워..."라는 구문이었습니다.

 

그러나, 다른 테이블과 관계없이 모든 데이터를 지우고 싶었습니다. 왜냐하면, 나중에는 참조하고 있는 테이블도 모두 다 삭제할 것이거던요. 결국, 방법을 찾았습니다.

SET foreign_key_checks = 0;
delete from <테이블명>;
SET foreign_key_checks = 1;

위의 방법은 참조하는 부분을 체크하지 말아줘~!! 라고 설정한 뒤, 삭제를 진행합니다. 그 이후에 다시 "이제부터는 다시 체크해 줘~!!"라고 하여 전체 데이터를 삭제하였습니다.

 

위 방법 외에도 여러 방법이 있을 것이라고 생각합니다. 

예를 들어, 참조 설정 부분을 모두 삭제하고 데이터를 삭제하는 방법이 있지만, 참조 설정을 다시해야한다는 번거로움이 존재합니다.

 

이에 따라, 처리할 수 있는 방법은 여러가지가 존재하지만, 동일한 결과가 존재한다면 다음과 같이 선택하면 됩니다.

쉽게 처리할 수 있는 방법, 빠르게 처리할 수 있는 방법!!!

 

모두 즐거운 개발 하시기 바랍니다.

반응형