>  기사  >  데이터 베이스  >  여러 쿼리를 사용하여 외래 키 제약 조건이 있는 테이블을 삭제할 수 없는 이유는 무엇입니까?

여러 쿼리를 사용하여 외래 키 제약 조건이 있는 테이블을 삭제할 수 없는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-04 17:32:02970검색

Why Can't I Drop a Table with Foreign Key Constraints Using Multiple Queries?

가짜 외래 키 제약 조건 실패

area라는 이름의 테이블을 데이터베이스에서 삭제하려고 할 때 외래 키를 나타내는 오류 메시지가 발생했습니다. 제약 실패. 영역과 외래 키 관계가 있는 다른 모든 테이블을 삭제했음에도 불구하고 제약 조건은 계속 유지되었습니다.

가능한 이유

데이터베이스에서 사용하는 스토리지 엔진인 InnoDB, 일반적으로 외래 키가 현재 스키마 외부의 테이블을 참조하는 것을 허용하지 않습니다. 따라서 외래 키 제약 조건으로 인해 여전히 영역 테이블 삭제가 차단되는 이유가 의아했습니다.

해결 방법

추가 조사 결과 특정 데이터베이스 도구에서 MySQL 쿼리 브라우저 또는 phpMyAdmin과 같은 각 쿼리에 대해 새 연결을 엽니다. 이 동작은 여러 쿼리에 변경 사항이 전파되는 것을 방지합니다. 문제를 해결하려면 단일 쿼리 내에서 모든 삭제 문을 실행해야 합니다.

SET FOREIGN_KEY_CHECKS=0;  -- Disable foreign key checks
DROP TABLE my_first_table_to_drop;
DROP TABLE my_second_table_to_drop;
SET FOREIGN_KEY_CHECKS=1;  -- Re-enable foreign key checks

외래 키 검사를 비활성화하면 제약 조건 오류를 발생시키지 않고 외래 키 관계에 포함된 테이블을 삭제할 수 있습니다. 이후 외래 키 검사를 다시 활성화하면 향후 작업을 위한 데이터베이스 무결성이 보장됩니다.

위 내용은 여러 쿼리를 사용하여 외래 키 제약 조건이 있는 테이블을 삭제할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.