CASE1 :
새 테이블을 만드는 동안 외래 키를 만들어야하는 경우
CREATE TABLE table1(
id SERIAL PRIMARY KEY,
column1 varchar(n) NOT NULL,
table2_id SMALLINT REFERENCES table2(id)
);
위의 명령은 이름이 'table1'이고 이름이 'id'(기본 키), 'column1', 'table2_id'(table2의 id 열을 참조하는 table1의 외래 키)라는 세 개의 열이있는 테이블을 만듭니다.
DATATYPE 'serial'은이 데이터 유형을 사용하는 열을 자동 생성 열로 만들며, 테이블에 값을 삽입 할 때이 열을 전혀 언급하지 않아도되거나 값 위치에 따옴표없이 'default'를 지정할 수 있습니다.
기본 키 열은 항상 값이 'tablename_pkey'인 테이블의 인덱스에 추가됩니다.
테이블 작성시 외래 키가 추가되면 CONSTRAINT가 '(present_table_name) _ (foreign_key_id_name) _fkey'패턴으로 추가됩니다.
외래 키를 추가 할 때, 열 이름 옆에 키워드 'REFERENCES'를 입력해야합니다. postgres에이 열이 테이블을 참조한다는 것을 알리고 참조 옆에 참조를 위해 테이블을 제공하고 괄호 안에 참조 된 테이블의 열 이름, 일반적으로 외래 키는 기본 키 열로 제공됩니다.
사례 2 :
기존 열의 기존 테이블에 대한 외래 키를 원하는 경우
ALTER TABLE table1
ADD CONSTRAINT table1_table2_id_id_fkey
FOREIGN KEY (table2_id) REFERENCES table2(id);
참고 : FOREIGN KEY 및 REFERENCES tabel2 뒤에 괄호 '()'가 있어야합니다. 그렇지 않으면 postgres에서 오류가 발생합니다.