-
[MySQL_Workbench]Error Code: 1701. Cannot truncate a table referenced in a foreign key constraint언어/mysql 2024. 5. 31. 13:52
workbench 에서 다음과 같이 오류가 난다면, 외래 키 제약 조건(foreign key constraint)이 걸려 있는 테이블을 TRUNCATE 하려고 할 때 발생합니다. 외래 키 제약 조건은 부모 테이블과 자식 테이블 간의 데이터 무결성을 유지하기 위해 사용됩니다. TRUNCATE 명령어는 테이블을 빠르게 초기화하는 명령이지만, 외래 키 제약 조건을 위반할 수 있기 때문에 제한이 있습니다.
1. 외래 키 제약 조건을 임시로 비활성화하고 TRUNCATE 실행
외래 키 제약 조건을 임시로 비활성화한 후 테이블을 TRUNCATE 하고 다시 활성화할 수 있습니다:
-- 외래 키 제약 조건 비활성화 SET foreign_key_checks = 0; -- 테이블 TRUNCATE TRUNCATE TABLE <테이블명>; -- 외래 키 제약 조건 다시 활성화 SET foreign_key_checks = 1;
2. DELETE 문을 사용하여 테이블 초기화
외래 키 제약 조건을 유지하면서 테이블의 데이터를 삭제하려면 TRUNCATE 대신 DELETE 문을 사용할 수 있습니다:
DELETE FROM BookShop.orderedBook;
3. 외래 키 제약 조건 제거 후 TRUNCATE 실행 후 재추가
외래 키 제약 조건을 제거하고 TRUNCATE 후 다시 추가할 수 있습니다:
-- 외래 키 제약 조건 제거 ALTER TABLE BookShop.orderedBook DROP FOREIGN KEY fk_orderedBook_orders_id; -- 테이블 TRUNCATE TRUNCATE TABLE BookShop.orderedBook; -- 외래 키 제약 조건 다시 추가 ALTER TABLE BookShop.orderedBook ADD CONSTRAINT fk_orderedBook_orders_id FOREIGN KEY (order_id) REFERENCES BookShop.orders(id);
사용 예시를 보여드리겠습니다.
위 사진을 보면 코드 에러가 납니다. 저는 1번 해결 방법을 사용하겠습니다.
설정해주고
잘 삭제되었습니다. ~,~