요약:이 튜토리얼에서,당신은 당신에 대해 배울 것입니다 PostgreSQL 외국 키를 추가하는 방법과 외국의 키 테이블을 사용하여 외국인 키의 제약 조건이 있습니다.
PostgreSQL 외래 키 제약 조건 소개
외래 키는 다른 테이블의 기본 키를 참조하는 테이블의 열 또는 열 그룹입니다.
외래 키가 포함 된 테이블을 참조 테이블 또는 자식 테이블이라고합니다. 그리고 외래 키가 참조하는 테이블을 참조 된 테이블 또는 부모 테이블이라고합니다.,
테이블은 다른 테이블과의 관계에 따라 여러 개의 외래 키를 가질 수 있습니다.
PostgreSQL 에서는 외래 키 제약 조건을 사용하여 외래 키를 정의합니다. 외래 키 제약 조건은 자식 테이블과 부모 테이블간에 데이터의 참조 무결성을 유지하는 데 도움이됩니다.
외국인 키의 제약 조건을 나타내는 값에서 열 또는 그룹의 열을 자식에서 테이블과 같 열에 있는 값이나 그룹의 열이의 부모이다.,
PostgreSQL 외국 key 구
은 다음과 같이 외국 key syntax:
이 구문에서:
- 첫 번째 이름을 지정한 외국의 키 제약 후
CONSTRAINT
키워드를 사용합니다.CONSTRAINT
절은 선택 사항입니다. 생략하면 PostgreSQL 이 자동 생성 된 이름을 할당합니다. - 둘째,
FOREIGN KEY
키워드 뒤에 괄호 안에 하나 이상의 외래 키 열을 지정하십시오., - 셋째,
절에서 외래 키 열에서 참조하는 상위 테이블 및 상위 키 열을 지정합니다.
- 마지막으로,지정의 삭제 및 업데이트 작업에는
ON DELETE
및ON UPDATE
절입니다.
삭제 및 업데이트 작업은 상위 테이블의 기본 키가 삭제되고 업데이트 될 때의 동작을 결정합니다. 기본 키가 거의 업데이트되지 않으므로ON UPDATE action
는 실제로 자주 사용되지 않습니다. 우리는ON DELETE
액션에 초점을 맞출 것이다.,
PostgreSQL 은 다음과 같은 작업을 지원합니다:
- 설정 NULL
- 설정의 기본
- 제한
- NO ACTION
- 캐스케이드
PostgreSQL 외국 key 예
다음 문을 만들기customers
및contacts
테이블:
이 예제에서는customers
테이블은 부모 테이블 그리고contacts
테이블은 아이는 테이블.
각 고객은 0 또는 많은 연락처를 가지고 있으며 각 연락처는 0 또는 하나의 고객에 속합니다.,
customer_id
columncontacts
테이블은 외국의 열쇠는 열 참조 기본 키를 열과 동일한 이름에서customers
테이블.
다음과 같은 외국 keyfk_customer
contacts
테이블을 정의는customer_id
으로 외국의 열쇠:
기 때문에 외국인 키의 제약이 없는ON DELETE
및ON UPDATE
조치,그들은 기본적으로NO ACTION
.,
NO ACTION
다음과 같은 데이터를 삽입하는customers
및contacts
테이블:
다음 문을 삭제하는 고객 id1 에서customers
테이블:
Code language: SQL (Structured Query Language) (sql)
기 때문에ON DELETE NO ACTION
PostgreSQL 문제약 조건을 위반하기 때문에 이 행을 참조하는 고객의 id1 에 여전히 존재하는contacts
테이블:
RESTRICT
조치는 유사한NO ACTION
., 이의 차이만이 발생할 경우 외국인 키의 제약 조건으로DEFERRABLE
와INITIALLY DEFERRED
또는INITIALLY IMMEDIATE
모드입니다. 후속 튜토리얼에서 이에 대해 더 자세히 설명하겠습니다.
설정 NULL
SET NULL
자동으로 설정NULL
외국에서 키 열을 참조하는 행위 테이블을 때 참조하는 행위 테이블은 삭제됩니다.,
다음과 같은 문 드롭 샘플 테이블과 다시 만들과 외국의 열쇠를 사용하는SET NULL
작업에는ON DELETE
절:
다음과 같은 문으로 데이터를 삽입customers
및contacts
테이블:
를 보는 방법을SET NULL
작동 보내고,고객과 함께 id1 에서customers
테이블:
Code language: SQL (Structured Query Language) (sql)
기 때문에ON DELETE SET NULL
액션, 참조하는 행contacts
테이블이 NULL 로 설정됩니다., 다음과 같은 문 데이터를 표시하는contacts
테이블:
으로 명확하게 보일 수 있습에서 출력, 행 있는customer_id
1 지금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 외국 키를 사용하는 방법과 외국인 키의 제약 조건을 만드는 외국에 대한 키 테이블에 있습니다.,이 튜토리얼이 도움이 되었습니까?
답글 남기기