> 데이터 베이스 > MySQL 튜토리얼 > 내 PostgreSQL 외래 키 참조가 '오류: 참조된 테이블 'bar'에 대해 지정된 키와 일치하는 고유 제약 조건이 없습니다'와 함께 실패하는 이유는 무엇입니까?

내 PostgreSQL 외래 키 참조가 '오류: 참조된 테이블 'bar'에 대해 지정된 키와 일치하는 고유 제약 조건이 없습니다'와 함께 실패하는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-08 22:20:47
원래의
738명이 탐색했습니다.

Why Does My PostgreSQL Foreign Key Reference Fail with

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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