กรณีที่ 1 :
ถ้าคุณต้องการสร้าง foreign key ในขณะที่สร้างตารางใหม่
CREATE TABLE table1(
id SERIAL PRIMARY KEY,
column1 varchar(n) NOT NULL,
table2_id SMALLINT REFERENCES table2(id)
);
คำสั่งข้างต้นจะสร้างตารางที่มีชื่อ 'table1' และสามคอลัมน์ชื่อ 'id' (คีย์หลัก), 'column1', 'table2_id' (foreign key ของ table1 ที่อ้างอิงคอลัมน์ id ของ table2)
DATATYPE 'serial' จะทำให้คอลัมน์ที่ใช้ประเภทข้อมูลนี้เป็นคอลัมน์ที่สร้างขึ้นอัตโนมัติเมื่อแทรกค่าลงในตารางที่คุณไม่จำเป็นต้องพูดถึงคอลัมน์นี้เลยหรือคุณสามารถให้ 'เริ่มต้น' โดยไม่ต้องใส่เครื่องหมายอัญประกาศที่ตำแหน่งค่า
คอลัมน์คีย์หลักจะถูกเพิ่มเข้าไปในดัชนีของตารางที่มีค่า 'tablename_pkey' เสมอ
หากมีการเพิ่มรหัสต่างประเทศในเวลาที่สร้างตาราง CONSTRAINT จะถูกเพิ่มด้วยรูปแบบ '(ปัจจุบัน _table_name) _ (foreign_key_id_name) _fkey'
เมื่อเพิ่มคีย์ต่างประเทศเราจะต้องป้อนคำหลัก 'ผู้อ้างอิง' ถัดจากชื่อคอลัมน์เพราะเราต้องการบอก postgres ว่าคอลัมน์นี้อ้างอิงตารางและถัดจากการอ้างอิงเราต้องให้ตารางสำหรับการอ้างอิงและในวงเล็บให้ ชื่อคอลัมน์ของตารางอ้างอิงโดยปกติแล้วจะมีการระบุรหัสต่างประเทศเป็นคอลัมน์คีย์หลัก
กรณีที่ 2:
ถ้าคุณต้องการ foreign key ไปยังตารางที่มีอยู่ในคอลัมน์ที่มีอยู่
ALTER TABLE table1
ADD CONSTRAINT table1_table2_id_id_fkey
FOREIGN KEY (table2_id) REFERENCES table2(id);
หมายเหตุ: วงเล็บ '()' หลังจากคีย์ต่างประเทศและการอ้างอิง tabel2 เป็นภาคบังคับมิฉะนั้น postgres จะเกิดข้อผิดพลาด