>  기사  >  백엔드 개발  >  데이터 조작을 위해 MySQL에서 외래 키 제약 조건을 일시적으로 비활성화하는 방법은 무엇입니까?

데이터 조작을 위해 MySQL에서 외래 키 제약 조건을 일시적으로 비활성화하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-07 08:43:02381검색

How to Temporarily Disable Foreign Key Constraints in MySQL for Data Manipulation?

임시 데이터 조작을 위해 MySQL에서 외래 키 제약 조건 비활성화

MySQL에서 외래 키 제약 조건은 테이블 간의 관계 불일치를 방지하여 데이터 무결성을 보장합니다. . 그러나 이러한 제약 조건은 때때로 빠른 데이터 조작을 방해할 수 있습니다.

문제:

Django에서 모델의 인스턴스를 삭제할 때 외래 키 제약 조건으로 인해 오류가 발생할 수 있습니다. 예:

cursor.execute("DELETE FROM myapp_item WHERE n = %s", n)
transaction.commit_unless_managed()  # a foreign key constraint fails here

cursor.execute("DELETE FROM myapp_style WHERE n = %s", n)
transaction.commit_unless_managed()

해결책:

외래 키 제약 조건을 일시적으로 비활성화하고 삭제를 허용하려면 DISABLE KEYS 명령을 사용하거나 FOREIGN_KEY_CHECKS 변수를 다음으로 설정할 수 있습니다. 0.

DISABLE KEYS 사용:

DISABLE KEYS

이 명령은 현재 세션에 대한 모든 외래 키 제약 조건을 비활성화합니다.

SET 사용 FOREIGN_KEY_CHECKS 변수:

SET FOREIGN_KEY_CHECKS=0;

이 명령은 전역 FOREIGN_KEY_CHECKS 변수를 0으로 설정하여 모든 외래 키 제약 조건을 비활성화합니다.

중요: 원하는 데이터를 수행한 후 조작하려면 FOREIGN_KEY_CHECKS를 다시 1로 설정하여 외래 키 제약 조건을 다시 활성화해야 합니다.

SET FOREIGN_KEY_CHECKS=1;

위 내용은 데이터 조작을 위해 MySQL에서 외래 키 제약 조건을 일시적으로 비활성화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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