요약:이 튜토리얼에서,당신은 당신에 대해 배울 것입니다 PostgreSQL 외국 키를 추가하는 방법과 외국의 키 테이블을 사용하여 외국인 키의 제약 조건이 있습니다.

PostgreSQL 외래 키 제약 조건 소개

외래 키는 다른 테이블의 기본 키를 참조하는 테이블의 열 또는 열 그룹입니다.

외래 키가 포함 된 테이블을 참조 테이블 또는 자식 테이블이라고합니다. 그리고 외래 키가 참조하는 테이블을 참조 된 테이블 또는 부모 테이블이라고합니다.,

테이블은 다른 테이블과의 관계에 따라 여러 개의 외래 키를 가질 수 있습니다.

PostgreSQL 에서는 외래 키 제약 조건을 사용하여 외래 키를 정의합니다. 외래 키 제약 조건은 자식 테이블과 부모 테이블간에 데이터의 참조 무결성을 유지하는 데 도움이됩니다.

외국인 키의 제약 조건을 나타내는 값에서 열 또는 그룹의 열을 자식에서 테이블과 같 열에 있는 값이나 그룹의 열이의 부모이다.,

PostgreSQL 외국 key 구

은 다음과 같이 외국 key syntax:

이 구문에서:

  • 첫 번째 이름을 지정한 외국의 키 제약 후CONSTRAINT키워드를 사용합니다. CONSTRAINT절은 선택 사항입니다. 생략하면 PostgreSQL 이 자동 생성 된 이름을 할당합니다.
  • 둘째,FOREIGN KEY키워드 뒤에 괄호 안에 하나 이상의 외래 키 열을 지정하십시오.,
  • 셋째,절에서 외래 키 열에서 참조하는 상위 테이블 및 상위 키 열을 지정합니다.
  • 마지막으로,지정의 삭제 및 업데이트 작업에는 ON DELETEON UPDATE절입니다.

삭제 및 업데이트 작업은 상위 테이블의 기본 키가 삭제되고 업데이트 될 때의 동작을 결정합니다. 기본 키가 거의 업데이트되지 않으므로ON UPDATE action는 실제로 자주 사용되지 않습니다. 우리는ON DELETE액션에 초점을 맞출 것이다.,

PostgreSQL 은 다음과 같은 작업을 지원합니다:

  • 설정 NULL
  • 설정의 기본
  • 제한
  • NO ACTION
  • 캐스케이드

PostgreSQL 외국 key 예

다음 문을 만들기customerscontacts 테이블:

이 예제에서는customers테이블은 부모 테이블 그리고contacts테이블은 아이는 테이블.

각 고객은 0 또는 많은 연락처를 가지고 있으며 각 연락처는 0 또는 하나의 고객에 속합니다.,

customer_idcolumncontacts테이블은 외국의 열쇠는 열 참조 기본 키를 열과 동일한 이름에서customers테이블.

다음과 같은 외국 keyfk_customercontacts테이블을 정의는customer_id으로 외국의 열쇠:

기 때문에 외국인 키의 제약이 없는ON DELETEON UPDATE조치,그들은 기본적으로NO ACTION.,

NO ACTION

다음과 같은 데이터를 삽입하는customerscontacts테이블:

다음 문을 삭제하는 고객 id1 에서customers테이블:

Code language: SQL (Structured Query Language) (sql)

기 때문에ON DELETE NO ACTIONPostgreSQL 문제약 조건을 위반하기 때문에 이 행을 참조하는 고객의 id1 에 여전히 존재하는contacts테이블:

RESTRICT조치는 유사한NO ACTION., 이의 차이만이 발생할 경우 외국인 키의 제약 조건으로DEFERRABLEINITIALLY DEFERRED또는INITIALLY IMMEDIATE모드입니다. 후속 튜토리얼에서 이에 대해 더 자세히 설명하겠습니다.

설정 NULL

SET NULL자동으로 설정NULL외국에서 키 열을 참조하는 행위 테이블을 때 참조하는 행위 테이블은 삭제됩니다.,

다음과 같은 문 드롭 샘플 테이블과 다시 만들과 외국의 열쇠를 사용하는SET NULL작업에는ON DELETE절:

다음과 같은 문으로 데이터를 삽입customerscontacts테이블:

를 보는 방법을SET NULL작동 보내고,고객과 함께 id1 에서customers테이블:

Code language: SQL (Structured Query Language) (sql)

기 때문에ON DELETE SET NULL액션, 참조하는 행contacts테이블이 NULL 로 설정됩니다., 다음과 같은 문 데이터를 표시하는contacts테이블:

으로 명확하게 보일 수 있습에서 출력, 행 있는customer_id1 지금customer_id설정을NULL

캐스케이드

ON DELETE CASCADE자동으로 삭제하는 모든이 참조하는 행위 테이블을 때 참조하는 행위 테이블은 삭제됩니다., 실제로ON DELETE CASCADE가 가장 일반적으로 사용되는 옵션입니다.

다음 문은 샘플 테이블을 다시 만듭니다.,iv>변화를CASCADE

다음 문을 삭제하는 고객 id1:

기 때문에ON DELETE CASCADE액션,모든 참조하는 행contacts테이블에 자동으로 삭제:

설정의 기본

ON DELETE SET DEFAULT 기본값을 설정합하는 외국 키를 열의를 참조하는 행위 테이블을 때 참조하는 행위 테이블은 삭제됩니다.,nt 는 기존 표

를 추가하는 외국인 키의 제약 조건 기존에 테이블을 사용하여 다음과 같은 형태의 ALTER TABLE 성명:

을 추가할 경우 외국인 키의 제약 조건과 함께ON DELETE CASCADE옵션에는 기존에 테이블을 필요 이 단계를 따른다:

첫째,드롭 기존 foreign key:

Code language: SQL (Structured Query Language) (sql)

첫째,새로 추가 외국인 키의 제약 조건과 함께ON DELETE CASCADE동작:

이 튜토리얼에서,당신은 당신에 대해 배운 PostgreSQL 외국 키를 사용하는 방법과 외국인 키의 제약 조건을 만드는 외국에 대한 키 테이블에 있습니다.,이 튜토리얼이 도움이 되었습니까?

  • YesNo