아래 편집기는 테이블 삭제 시 외래 키 제약 조건을 무시하는 MySQL의 간단한 구현을 제공합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 에디터를 따라가서 살펴보겠습니다.
테이블 삭제는 특히 외래 키 연관이 있는 테이블의 경우 일반적이지 않으므로 삭제할 때 주의하세요. 그러나 개발 과정에서 스키마 설계상의 문제를 발견하고, 기존 데이터베이스의 모든 테이블을 삭제하고 다시 생성하는 일이 흔하며, 또한 테스트 중에 데이터베이스의 모든 테이블을 다시 생성해야 하는 경우도 있다. 물론 많은 자동화 도구도 이 작업을 수행할 수 있습니다.
테이블을 삭제할 때 다음 오류 메시지가 나타나는 경우가 있습니다.
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
삭제하려는 테이블의 필드가 있기 때문입니다. 다른 테이블에 대한 외래키로 사용되므로, 이 테이블(부모테이블)을 삭제하기 전에 외래키가 있는 테이블(자식테이블)을 먼저 삭제해야 합니다. 즉, 테이블을 삭제하는 과정은 테이블을 생성하는 과정과 동일해야 합니다. <… 불가능한). 따라서 MySQL은 필요할 때 외래 키 제약 조건을 확인할지 여부를 설정하기 위해
변수일반적으로 다음을 수행하는 것이 좋습니다. 먼저 모든 DROP 문을 자동으로 생성하고 MyDatabaseName을 데이터베이스 이름으로 바꿉니다.
SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') FROM information_schema.tables WHERE table_schema = 'MyDatabaseName';
그런 다음 다음 명령문을 추가하여 생성된 코드 앞뒤에 FOREIGN_KEY_CHECKS 변수를 설정합니다.
SET FOREIGN_KEY_CHECKS = 0 -- DROP语句 SET FOREIGN_KEY_CHECKS = 1;
그러나 마지막 문장을 잊어버려도 문제가 되지 않습니다. 이 변수는
Session, 즉 클라이언트를 닫고 연결을 다시 설정하면 이 변수는 기본값으로 돌아갑니다. 전역 범위에서 외래 키 제약 조건을 확인할 필요가 없는 경우(이런 상황은 비교적 드물지만) 다음을 수행할 수 있습니다. SET GLOBAL FOREIGN_KEY_CHECKS = 0;
set @@global.FOREIGN_KEY_CHECKS = 0;
위 내용은 테이블 삭제 시 외래 키 제약 조건을 무시하기 위한 MySQL의 코드 예제 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!