오류: 외래 키 제약 조건 위반 – 상위 행 삭제
작업 레코드(예: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!