MySQL의 외래 키 제약 조건 임시 비활성화
MySQL에서 외래 키 제약 조건은 참조 무결성을 강화하여 관련 테이블 간의 데이터 일관성을 보장합니다. 그러나 모델 삭제 중과 같이 이러한 제약 조건을 일시적으로 비활성화해야 하는 시나리오가 있습니다.
상호 외래 키 관계가 있는 다음 Django 모델을 고려하세요.
class Item(models.Model): style = models.ForeignKey('Style', on_delete=models.CASCADE) class Style(models.Model): item = models.ForeignKey('Item', on_delete=models.CASCADE)
인스턴스 삭제 시도 두 모델을 순차적으로 사용하면 오류가 발생할 수 있습니다.
cursor.execute("DELETE FROM myapp_item WHERE n = %s", n) transaction.commit_unless_managed() # foreign key constraint fails here cursor.execute("DELETE FROM myapp_style WHERE n = %s", n) transaction.commit_unless_managed()
이 외래 키 제약 조건을 우회하려면 일시적으로 비활성화할 수 있습니다. 다음 방법 중 하나를 사용합니다.
1. 키 비활성화:
ALTER TABLE myapp_item DISABLE KEYS;
이 명령은 테이블을 다시 열거나 닫은 후 제약 조건을 다시 활성화합니다.
2. SET FOREIGN_KEY_CHECKS:
SET FOREIGN_KEY_CHECKS = 0; # Disable foreign key checks
삭제 작업 후 제약 조건을 다시 활성화해야 합니다.
SET FOREIGN_KEY_CHECKS = 1; # Re-enable foreign key checks
위 내용은 MySQL에서 외래 키 제약 조건을 일시적으로 비활성화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!