PostgreSQL 외래 키 제약 조건 실패: 고유한 제약 문제
이 문서에서는 일반적인 PostgreSQL 9.1 외래 키 제약 조건 오류인 "오류: 참조 테이블 "bar"에 대해 지정된 키와 일치하는 고유 제약 조건이 없습니다."에 대해 설명합니다. 원인을 분석하여 해결책을 제시해드리겠습니다.
이 시나리오에는 "foo", "bar" 및 "baz"라는 세 개의 테이블이 포함됩니다. "foo"에는 기본 키("name")가 있습니다. "bar"는 "foo_fk"를 통해 "foo"를 참조하고 자체 기본 키("pkey")와 고유 제약 조건("foo_fk", "name")을 갖습니다. "baz"는 "bar_fk"를 사용하여 "bar"를 참조합니다.
오류 메시지는 "bar"의 여러 행이 "foo_fk" 및 "name"에 대해 동일한 값을 공유할 수 있으므로 "baz"의 외래 키 제약 조건을 적용할 수 없음을 나타냅니다. "baz"의 외래 키는 "bar"의 해당 행을 고유하게 식별할 수 없으므로 이는 참조 무결성을 위반합니다.
문제는 'bar'의 고유 제약 조건에서 비롯됩니다. "foo_fk"와 "name"의 조합 전체에서 고유하지만 "bar" 내에서 "name"의 고유성을 독립적으로 보장하지는 않습니다. 따라서 "bar"의 여러 행은 "name"은 동일하지만 "foo_fk" 값은 다를 수 있습니다.
해결책:
이 문제를 해결하려면 "bar" 테이블의 "name" 열에 고유 제약 조건을 추가하세요. 이렇게 하면 각 "이름" 값이 고유하므로 "baz"의 외래 키 제약 조건이 올바르게 작동할 수 있습니다. 이 고유 제약 조건을 구현하면 외래 키 관계가 올바르게 적용되어 오류를 방지하고 의도한 데이터베이스 구조가 설정됩니다.
위 내용은 내 PostgreSQL 외래 키 참조가 '오류: 참조된 테이블 'bar'에 대해 지정된 키와 일치하는 고유 제약 조건이 없습니다'와 함께 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!