> 데이터 베이스 > MySQL 튜토리얼 > 외래 키를 생성할 때 Postgres에서 '주어진 키와 일치하는 고유 제약 조건 없음' 오류가 발생하는 이유는 무엇입니까?

외래 키를 생성할 때 Postgres에서 '주어진 키와 일치하는 고유 제약 조건 없음' 오류가 발생하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-08 22:19:53
원래의
766명이 탐색했습니다.

Why Does Postgres Throw a

Postgres 참조 무결성 오류 이해

Postgres(버전 9.1 이상)에서 데이터베이스 구조를 구축할 때 다음 오류가 발생할 수 있습니다.

<code>ERROR: there is no unique constraint matching given keys for referenced table "bar"</code>
로그인 후 복사

이 오류는 데이터베이스 일관성의 중요한 측면인 Postgres의 참조 무결성 시행으로 인해 발생합니다. 원인과 해결방안을 분석해보겠습니다.

참조 무결성 및 외래 키

참조 무결성은 관련 테이블 간의 데이터 일관성을 보장합니다. 외래 키 관계는 테이블 간의 링크를 설정합니다. 예를 들어 bar 테이블에 foo_fk 테이블의 name 열을 참조하는 외래 키 foo가 있는 경우 참조 무결성은 foo_fk의 모든 bar 값이 name의 기존 foo 값과 일치해야 함을 규정합니다.

.

고유제약의 역할

name참조 무결성을 유지하기 위해 Postgres에서는 참조 열(foo 테이블의 name)에 고유 제약 조건을 적용해야 합니다. 이 제약 조건은 foo의 각

값이 고유함을 보장하므로 Postgres가 참조 행을 명확하게 식별할 수 있습니다.

오류 원인: 고유 제약 조건 누락

name오류 메시지는 외래 키가 참조하는 열에 고유 제약 조건이 누락되었음을 나타냅니다. foofoo_fk 열에 고유 제약 조건이 없으면 Postgres는 barfoo 값을

의 특정 행에 안정적으로 연결할 수 없어 오류가 발생합니다.

오류 해결: 고유 제약 조건 추가

ALTER TABLE해결 방법은 간단합니다. 참조 열에 고유 제약 조건을 추가하면 됩니다. SQL에서는 ADD CONSTRAINT

명령을 사용하여 이 작업을 수행합니다.
<code class="language-sql">ALTER TABLE foo ADD CONSTRAINT foo_name_unique UNIQUE (name);</code>
로그인 후 복사

name이러한 추가 기능은 foo

열에 고유성을 적용하여 참조 무결성에 대한 Postgres의 요구 사항을 충족하고 외래 키 관계가 올바르게 작동할 수 있도록 합니다. 제약 조건을 추가한 후 외래 키 관계 생성 시도가 성공해야 합니다.

위 내용은 외래 키를 생성할 때 Postgres에서 '주어진 키와 일치하는 고유 제약 조건 없음' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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