> 데이터 베이스 > MySQL 튜토리얼 > 작업 기록을 삭제할 수 없는 이유: 외래 키 제약 조건 위반?

작업 기록을 삭제할 수 없는 이유: 외래 키 제약 조건 위반?

Patricia Arquette
풀어 주다: 2025-01-14 16:17:44
원래의
568명이 탐색했습니다.

Why Can't I Delete a Job Record: Foreign Key Constraint Violation?

오류: 외래 키 제약 조건 위반 – 상위 행 삭제

작업 레코드(예: DELETE FROM jobs WHERE job_id = 1 LIMIT 1;)를 삭제하려고 하면 오류 #1451: "상위 행을 삭제하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 실패합니다."가 발생합니다. 이는 advertisers 테이블에 jobs 테이블의 advertiser_id을 참조하는 외래 키가 있기 때문에 발생합니다.

데이터베이스 스키마:

데이터베이스에는 다음 테이블이 포함됩니다.

  • advertisers:

    • advertiser_id(기본 키)
    • name, password, email, address, phone, fax, session_token
    • 외래 키 제약 조건 advertisers_ibfk_1 jobs.advertiser_id
    • 참조
  • jobs:

    • job_id(기본 키)
    • advertiser_id(외래 키)
    • name, shortdesc, longdesc, address, time_added, active, moderated

해결 방법: 외래 키 제약 조건을 일시적으로 비활성화

해결책에는 외래 키 검사를 일시적으로 비활성화하여 삭제를 허용한 다음 이를 다시 활성화하여 데이터 무결성을 유지하는 것이 포함됩니다.

<code class="language-sql">SET FOREIGN_KEY_CHECKS = 0;  -- Disable foreign key checks

DELETE FROM `jobs` WHERE `job_id` = 1 LIMIT 1; -- Delete the problematic job record

SET FOREIGN_KEY_CHECKS = 1;  -- Re-enable foreign key checks</code>
로그인 후 복사

이 방법을 사용하면 전체 데이터베이스의 참조 무결성을 유지하면서 삭제할 수 있습니다. 외래 키 확인 비활성화의 의미를 주의 깊게 고려하고 꼭 필요한 경우에만 이 접근 방식을 사용하십시오.

위 내용은 작업 기록을 삭제할 수 없는 이유: 외래 키 제약 조건 위반?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿